GNU/Linux >> Linux の 問題 >  >> Linux

ファイル名にスペースが含まれるスクリプトで問題が発生しましたか?

リモートホストからローカルにファイルをscpするスクリプトがあります。ファイル名にスペースが含まれている場合があります。 scpは、ファイル名のスペースを好みません。何らかの理由で、スペースを処理しようとしても正しいscpパスが得られませんでした。

コード:

PATH=/var/root/Documents/MyFile OG-v1.2.3.pkg
scp $PATH [email protected]:/Users/Me/Desktop

結果

Cannot find directory: var/root/Documents/MyFile
Cannot find directory: OG-v1.2.3.pkg

PATHを引用符で囲みます"$PATH" 同じエラーが発生します。

スペースをエスケープされたスペースに交換することも機能していませんが、私が知る限り、次のようにする必要があります。

ESC_PATH=${PATH/' '/' '}

エスケープされたパスを印刷すると、編集が機能したことがわかります:

echo $ESC_PATH
> /var/root/Documents/MyFile OG-v1.2.3.pkg

承認された回答:

宣言と使用法の両方を引用する必要があります

path="/var/root/Documents/MyFile OG-v1.2.3.pkg"
scp "$path" [email protected]:/Users/Me/Desktop

最初の引用を行わない場合は、$path 最初の部分だけが含まれます。 2番目を引用しない場合は、scp スペースで区切られた各部分を引数として扱います。

$PATHを変更しました $path$PATH は重要な予約変数であり、一般的な目的で使用しないでください。)


Linux
  1. 「でスクリプトを実行します。 」と「ソース」で?

  2. スペースを含むファイル名をシェルスクリプトに渡しますか?

  3. スクリプトが終了したメッセージで突然終了しますか?

  1. Bashスクリプトの変数用のスペース?

  2. ユーザーとして引数を使用してスクリプトを実行しますか?

  3. Bashスクリプトでスペースをエスケープできないのはなぜですか?

  1. bashスクリプトにスペースを含むベース名?

  2. 現在のディレクトリでスクリプトを入手できません

  3. リモート Linux からローカル Windows への scp (ローカル パスにスペースを含む)