我有一个大型的shell脚本来处理我的每个Solaris系统的文件。
在一开始,脚本创建了一个变量FILENAMES,有时人们会创建包含空格的目录文件,如:FILENAMES。
/users/ldap/Anukriti's System Backup/BACKUP/workspace/BP8/scripts/yui/editor/simpleeditor.js
在脚本的后面,我运行
cp $FILENAME $DESTDIR/
你可以想象,这总是失败,因为下面的内容无效。
cp /users/ldap/Anukriti's System Backup/BACKUP/workspace/BP8/scripts/yui/editor/simpleeditor.js $DESTDIR
我试过把变量放在引号里,但这不起作用。我以前使用过带有-exec选项的find,但在这种情况下,这并不是一个真正的选项,尤其是Solaris不支持-wholename或-path选项。
我可以在这里做什么?
你只需要用引号来保护变量。
cp "$FILENAME" "$DESTDIR"
注意
不要使用单引号 '
,变量不能这样展开。
看来我需要使用大括号来扩展变量,并使用双引号。
cp "${FILENAME}" $DESTDIR
确保
$DESTDIR
存在/
.你可能不相信,但这是你的问题。 :-)