【发布时间】:2015-04-19 06:06:00
【问题描述】:
我正在尝试从 shell 脚本中的变量运行命令。使用的 shell 是 bash shell。
文件exp 包含:
abcdef
执行以下命令:
sed s/b/\ / exp
...产生输出:
a cdef
但正在执行:
cmd="sed s/b/\ / exp"
echo $cmd
$cmd
...产生以下错误:
sed s/b/\ / exp
sed: -e expression #1, char 5: unterminated `s' command
我可以看到在执行之前添加eval 是有效的。但我不明白为什么。你能解释一下为什么一种方法有效而另一种方法无效吗?
【问题讨论】:
-
不要将命令放入字符串中。如您所见,它并不总是有效。这是一些recommended reading。
-
感谢您的回复和链接
-
@tripleee 注意问题最终出在
sed本身的解释上。看我的回答。 -
@Yosha 是否有任何答案解决了您的问题?由于您是新来的,如果您的问题已经解决,请不要忘记将答案标记为已接受。您可以单击答案旁边的复选标记将其从空心切换为绿色。如有任何疑问,请参阅Help Center > Asking!