リモートホストからローカルにファイルを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
は重要な予約変数であり、一般的な目的で使用しないでください。)