linux – 从shell脚本中的变量运行shell命令
发布时间:2020-12-13 19:17:47 所属栏目:Linux 来源:网络整理
导读:我试图从 shell脚本中的变量运行命令.正在使用的shell是bash shell. 文件exp包含: abcdef 执行以下命令: sed s/b/ / exp …产生输出: a cdef 但执行: cmd="sed s/b/ / exp"echo $cmd$cmd …产生以下错误: sed s/b/ / expsed: -e expression #1,char
我试图从
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.但我无法理解为什么.你能解释一下为什么一种方法有效而另一种方法不起作用? 解决方法
你遇到的问题是Bash没有正确解释空间本身.
如果用另一个字符替换b,请查看它是如何工作的,比如X: $cmd="sed s/b/X/ exp" $$cmd aXcdef 所以解决方法是使用十六进制表示空间,即20: $cmd="sed s/b/x20/ exp" $$cmd a cdef 或者使用 $cmd="sed s/b/ / exp" $eval "$cmd" a cdef 正如Tom Fenech所建议的那样,将命令存储在变量中并不是一种好的方法,如I’m trying to put a command in a variable,but the complex cases always fail!所述.它有时可以工作,但在其他情况下会产生不可预测的结果.另一种方法是考虑使用函数. 最后,注意eval在这种情况下可以派上用场,只是对存储的内容非常小心.一些好的阅读:Variable as command; eval vs bash -c. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |