0

ファイルが移動された場所から新しい場所にシンボリックリンクをコピーして削除し、作成する小さなスクリプトを作成しました。複数回簡単に実行するために変数を使用しましたが、ファイルにスペースが含まれていると、すべてのスペースの前に「\」を使用しているにもかかわらず、エラーが発生します。これが私のコードです:

dest=~/Videos-win/file\ name\ with\ spaces
src=~/Downloads/file\ name\ with\ spaces

echo $dest ;
cp -r $src $dest ;
rm -R $src ;
ln -s $dest $src ;
echo 'done'

「\\」も試しました(「\」をvarに追加)。また、いくつかのエラーが発生しました。

誰が私が間違っているのか知っていますか? tnx

4

3 に答える 3

2

これを試して :

dest="$HOME/Videos-win/file name with spaces"
src="$HOME/Downloads/file name with spaces"

echo "$dest"
cp -r "$src" "$dest"
rm -R "$src"
ln -s "$dest" "$src"
echo 'done'

もっと引用してください!それらは不可欠です。'また、と"と `の違いを学びます。http://mywiki.wooledge.org/Quotesおよびhttp://wiki.bash-hackers.org/syntax/wordsを参照してください。

于 2012-10-17T23:42:58.970 に答える
1

変数には「間隔を空けた」値が含まれますが、スペースはコマンドcp rmlnコマンドに渡されます。

実際に使用する変数を二重引用符で囲み、値全体 (スペースを含む) が単一の引数としてコマンドに渡されるようにします。

試す:

cp -r "$src" "$dest"
rm -R "$src"
ln -s "$dest" "$src"

...そして、すべてのセミコロンは必要ありません...

于 2012-10-17T23:44:27.153 に答える
0

二重引用符を使用してみてください:

cp -r "$src" "$dest" ;

...

于 2012-10-17T23:43:12.620 に答える