私のスクリプトには次のものがあります。
sshkey="/Users/me/some path/with spaces/id_rsa"
dstport=...
dstparent=...
dstuserhost=...
rsync -az --delete -e "ssh -i $sshkey -p $dstport" $src $dstuserhost:$dstparent
私がそれを実行すると、私は得ます:
rsync: "/Users/me/some" の link_stat 失敗: 対応するファイルまたはディレクトリなし (2)
ベストアンサー1
周囲に一重引用符を追加すると、$sshkey
問題が解決します。
rsync -az --delete -e "ssh -i '$sshkey' -p '$dstport'" "$src" "$dstuserhost:$dstparent"
値$sshkey
は二重引用符で囲まれた文字列内にあるため、呼び出し前にインタラクティブシェルによって拡張されますが、単一引用符は、接続を確立するために呼び出しが行われたrsync
ときに文字列がもはや分割されるのを防ぎます。rsync
ssh
$sshkey
それ自体に一重引用符文字が含まれていないとします。