错误的方式:
# su - testuser -c "/tmp/test.sh; echo $?"
Sun Microsystems Inc. SunOS 5.10 Generic January 2005
0
正确的方式:
# su - testuser -c '/tmp/test.sh; echo $?'
Sun Microsystems Inc. SunOS 5.10 Generic January 2005
3
区别就在于单引号和双引号的含义不同,双引号会进行内容解析,单引号是原样传入。可以用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 2005
0
# su - testuser -c '/tmp/test.sh; echo $?'
+ su - testuser -c '/tmp/test.sh; echo $?'
Sun Microsystems Inc. SunOS 5.10 Generic January 2005
3
理解了上面内容,就能发现,其实这样也是可以的
su - testuser -c "/tmp/test.sh; echo \$?"