在bash/ksh中获取命令的退出代码
我想写这样的代码:
command="some command" safeRunCommand $command safeRunCommand() { cmnd=$1 $($cmnd) if [ $? != 0 ]; then printf "Error when executing command: '$command'" exit $ERROR_CODE fi } 但这个代码不工作的方式,我想要的。
下面是固定代码:
#!/bin/ksh safeRunCommand() { typeset cmnd="$*" typeset ret_code echo cmnd=$cmnd eval $cmnd ret_code=$? if [ $ret_code != 0 ]; then printf "Error : [%d] when executing command: '$cmnd'" $ret_code exit $ret_code fi } command="ls -l | grep p" safeRunCommand "$command" 现在,如果你看看这段代码,我改变的几件事情是: >使用排版不是必要的,但是一个好的做法。它使cmnd和ret_code local到safeRunCommand 注意:记住一些命令给出1作为返回码,即使没有像grep一样的错误。如果grep找到了东西,它会返回0 else 1。 我用KSH / BASH测试。它工作正常。让我知道如果你面对问题运行这个。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |