Shell 执行 字符串命令执行 macos执行

#!/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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值