带空格的变量问题

时间:2012-10-17 23:39:57

标签: linux shell

我写了一个小脚本,复制,然后删除,然后创建一个符号链接,从文件移动到它的新位置。 为了轻松地多次使用变量,我使用了变量,但是当文件中有空格时,我会遇到一些错误,即使我在每个空间前都使用'\'。 这是我的代码:

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

3 个答案:

答案 0 :(得分: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/Quoteshttp://wiki.bash-hackers.org/syntax/words

答案 1 :(得分:1)

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

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

尝试:

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

...而且你不需要所有的分号......

答案 2 :(得分:0)

尝试使用双引号:

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

...