#!/bin/bash
function job(){
cmdTmp=${*}
echo $cmdTmp
#$cmdTmp | tee -a a.log
eval $cmdTmp |tee -a a.log
}
# entry
cmd="mvn package -Dmaven.test.skip"
echo ""> a.log
job $cmd
如上例:
使用bash shell 脚本执行,字符串参数时,可以使用 eval $cmdTmp这样的命令$cmdTmp 为要执行的命令,
这里$cmdTmp 执行也是可行,另外一台电脑执行有报错,eval $cmdTmp 脚本命令时正常的。
其他扩展:
方法传参数包含空格使用$1 $2会有问题,上面使用的是$* 以一个单字符串显示所有传递的参数。
另外还有$@ 。
使用$*或者$@传递该参数,会以一个单字符串显示所有传递的参数。
不同之处在于$*会把所有包含的位置参数当成一个整体,而$@会把所有位置参数当成单独的字段
或者不使用传参数的方式,使用变量直接获取带空格的字符串
#!/bin/bash
function job(){
cmdTmp=$cmd
echo $cmdTmp
#$cmdTmp | tee -a a.log
eval $cmdTmp |tee -a a.log
}
# entry
cmd="mvn package -Dmaven.test.skip"
echo ""> a.log
job