我想使用超级用户权限调用脚本stuff.sh
,然后获取其退出代码。但是,执行su -c ./stuff.sh; echo $?
之类的操作始终会打印0.我认为这是因为$?
中包含的返回值是su
返回值,而不是stuff.sh
如何检索我的脚本stuff.sh
的正确值?
修改1 当我执行su -c './stuff.sh; echo $?'
时,echo
会返回stuff.sh
退出代码的正确值,但我无法将其删除su
su -c './stuff.sh; eval echo $? $code'
执行类似echo $code
的操作:su
只要我离开su -c stuff.sh
命令就会返回0。
编辑2 我应该提到上下文和我的发行版,因为这确实不是Ubuntu上的问题。
call.sh
从另一个脚本PageSerializer
调用,该脚本本身由Android应用程序执行。
答案 0 :(得分:2)
根据手册页
su normally returns the exit status of the command it executed. If the command was killed by a signal, su returns the number of the
signal plus 128.
Exit status generated by su itself:
1 Generic error before executing the requested command
126 The requested command could not be executed
127 The requested command could was not found
如果这是一个选项,请使用ssh获取返回代码
ssh -l username localhost "command"
echo $?
答案 1 :(得分:0)
奇怪。运行su:
后,可以找到退出代码$ su -c true ; echo $?
0
$ su -c false ; echo $?
1
答案 2 :(得分:0)
添加一些引号可以获得stuff.sh
的实际退出代码。正确的语法是:
su -c './stuff.sh; echo $?'