ファイル名にスペースが含まれるスクリプトの問題

ファイル名にスペースが含まれるスクリプトの問題

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

おすすめ記事