获取su后执行的脚本的返回值

it2025-01-17  3

错误的方式:

# su - testuser -c "/tmp/test.sh; echo $?"Sun Microsystems Inc.   SunOS 5.10      Generic January 20050

正确的方式:

# su - testuser -c '/tmp/test.sh; echo $?'Sun Microsystems Inc.   SunOS 5.10      Generic January 20053

 

区别就在于单引号和双引号的含义不同,双引号会进行内容解析,单引号是原样传入。可以用set -x查看:

# set -x# su - testuser -c "/tmp/test.sh; echo $?"+ su - testuser -c '/tmp/test.sh; echo 0'Sun Microsystems Inc.   SunOS 5.10      Generic January 20050# su - testuser -c '/tmp/test.sh; echo $?'+ su - testuser -c '/tmp/test.sh; echo $?'Sun Microsystems Inc.   SunOS 5.10      Generic January 20053

 

理解了上面内容,就能发现,其实这样也是可以的

su - testuser -c "/tmp/test.sh; echo \$?"

转载于:https://www.cnblogs.com/tuzkee/p/3490524.html

最新回复(0)