【发布时间】:2018-11-29 22:06:23
【问题描述】:
我将“file1 Nov 2018.txt”的路径存储在变量“var”中。然后我在 awk 脚本中使用这个 shell 变量 生成另一个脚本(这是一个小例子)。问题是路径和文件名有空格,甚至我把变量放在双引号“”之间 在 awk 中,我放在单引号 '' 之间也不起作用。我收到错误“没有这样的文件或目录”
如何处理这个有空格的路径?
脚本是这样的:
var="/mydrive/d/data 2018/Documents Nov/file1 Nov 2018.txt"
z=$(awk -v a="$var" 'BEGIN{str = "cat " 'a' ; print str}')
eval "$z"
我收到以下错误:
$ eval "$z"
cat: /mydrive/d/data: No such file or directory
cat: 2018/Documents: No such file or directory
cat: Nov/file1: No such file or directory
cat: Nov: No such file or directory
cat: 2018.txt: No such file or directory
感谢您的帮助。
【问题讨论】:
-
你真正想要什么?你的逻辑看起来很奇怪。你的 awk 构建了一个
cat file字符串,然后你eval theStr... 为什么?!你知道 awk 可以加载文件,你也可以cat没有 awk... -
尝试转义文件名中的空格。
-
@Kent 就像我说的,这是一个小例子来说明。在我的实际脚本中,awk 获取另一个脚本的输出并生成一个 imagemagick 脚本,但问题是一样的,该脚本不起作用,因为路径包含空格。所以在我的原始脚本中,我有一个很长的 awk 逻辑,它将所有内容存储在变量“str”中,并且这个变量包含我使用 eval 运行的最终脚本。我希望有意义。
-
强制邪恶
eval评论!