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'

请使用更多报价!它们至关重要。'另外,了解and"和`之间的区别。请参阅http://mywiki.wooledge.org/Quoteshttp://wiki.bash-hackers.org/syntax/words

于 2012-10-17T23:42:58.970 回答
1

您的变量将具有“间隔”值,但随后空格将传递给cp rmandln命令。

在实际使用它们的变量周围加上双引号,以确保将整个值(包括空格)作为单个参数传递给命令。

尝试:

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 回答