在脚本中执行脚本还会执行其echo语句

时间:2019-07-22 19:57:58

标签: bash shell

我正在编写一个简单的bash脚本,该脚本将命令行中的命令作为参数并执行该命令(在我的情况下为另一个bash脚本)。

该命令可以是任何命令,也可以是简单的echo语句,也可以是对另一个脚本的调用。例如:在下面的示例中,我称呼我的脚本为

sh wrapper.sh "sh dummy.sh" \tmp\logs.txt

> cat dummy.sh
#!/bin/bash

echo "scooby dooby doo"
echo "duck tales whoo hoo"


> cat wrapper.sh
#!/bin/bash

commandToExec=$1
logPath=$2

{
echo "Executing command:  ${commandToExec}"
$(commandToExec)
ret_status=$?

if [ $ret_status -eq 0 ]
  then
    echo "Script ran successfully"
  else
    echo "Script failed"
fi  

echo "Script status is ${ret_status}"
} >> ${logPath} 2>&1

echo "Return status for command $ret_status"
exit $ret_status

我的输出是:

Executing command:  sh dummy.sh
wrapper.sh: line 8: scooby: command not found

因此,尽管它成功执行了dummy.sh并且应该返回状态0,但是它却在dummy.sh中执行了echo语句,并且失败,退出代码为非0。

0 个答案:

没有答案