0

我有一个大型 shell 脚本来处理我的每个 Solaris 系统的文件。

脚本开始时会创建一个变量 FILENAME 有时人们会创建包含空格的目录/文件。例如

/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

我尝试将变量放在引号中,但这不起作用。我以前使用 find 和 -exec 选项,但在这种情况下,这并不是一个真正的选项,特别是因为 Solaris 不支持 -wholename 或 -path 选项

我可以在这里做什么?

4

3 回答 3

9

你只需要用引号保护变量:

cp "$FILENAME" "$DESTDIR"

笔记

不要使用单引号',变量不能这样展开。

于 2012-10-09T21:45:46.453 回答
2

看起来我需要使用花括号进行变量扩展和双引号

cp "${FILENAME}" $DESTDIR
于 2012-10-10T03:50:04.953 回答
0

确保

  • $DESTDIR存在
  • 是一个目录
  • 是的,对两个变量都使用双引号并去掉尾随的/.

你可能不相信,但那是你的问题。:-)

于 2012-10-09T22:05:06.687 回答