我正在编写一个简单的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。