[英]Linux sed in bash script
我正在使用这个非常简单的bash脚本:
#!/bin/bash
CMD="sed -e 's/test/abz/' <test >test_res"
echo $CMD
$CMD
当我运行脚本时,得到以下输出:
sed -e 's/test/abz/' <test >test_res
sed: -e expression #1, char 1: unknown command: `''
如果我在cmd行(不在bash脚本中)运行完全相同的cmd(sed -e's / test / abz /'test_res),则工作正常。
我究竟做错了什么? 任何帮助深表感谢。
不要将您的参数存储在单个变量中,因为分词会逐字解释其中的引号。 快速的技巧是使用eval,但不建议这样做:
CMD="sed -e 's/test/abz/' <test >test_res"
eval "$CMD"
您可以使用数组,但只能对参数进行操作,不包括重定向:
CMD=(sed -e 's/test/abz/')
"$CMD[@]}" <test >test_res
至于错误sed: -e expression #1, char 1: unknown command: `''
,这仅仅是因为您的命令扩展为:
sed -e "'s/test/abz/'" "<test" ">test_res"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.