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
ベストアンサー1
宣言と使用法を引用する必要があります。
path="/var/root/Documents/MyFile OG-v1.2.3.pkg"
scp "$path" [email protected]:/Users/Me/Desktop
最初の部分を引用しない場合は、$path
最初の部分のみが含まれます。 2番目の部分を引用しないと、scp
スペースで区切られた各部分はパラメータとして扱われます。
(重要な予約変数であり、一般用途では使用できないため$PATH
に変更しました。)$path
$PATH