shell脚本中执行命令的疑难浅析
问题场景描述
代码模式如下,目标是去除$all_xls_version_file中的在err_xls_list中出现的行。
#--sed_test.sh--
#!/bin/bash
...
...
for xls in $err_xls_list
do
cmd="sed -i '/$xls/d' $all_xls_version_file"
echo $cmd
$cmd
done
执行脚本报错:./sed_test.sh
sed: -e expression #1, char 1: unknown command: `''
很是困惑,为什么会有unknown command这种神奇的字符呢。而echo出来的sed命令是可以直接在shell终端直接执行成功的。查查究竟为何?!
思考与分析
1) sed -i '/$xls/d' $all_xls_version
被shell作为sed -i '/$xls/d' $all_