我有一个像这样的shell脚本片段 -
status() {
if [ -x "$PRGDIR/qtcat_ctl.sh" ]; then
echo "Status-ing qtcat Server"
if [ -z "$QTCAT_RUNTIME_USER" ]; then
eval $PRGDIR/qtcat_ctl.sh status
else
su - $QTCAT_RUNTIME_USER -c $PRGDIR/qtcat_ctl.sh status
fi
RETVAL=$?
else
echo "Startup script $PRGDIR/qtcat_ctl.sh doesn't exist or is not executable."
RETVAL=255
fi
}
如果QTCAT_RUNTIME_USER
设置为“”,则脚本运行正常,但如果我尝试将QTCAT_RUNTIME_USER
设置为其他帐户,则status
参数不会传递给qtcat_ctl.sh
脚本。
答案 0 :(得分:1)
如果您需要通过su向程序发送参数,则必须引用所有命令。
程序a.sh:
的示例$ cat a.sh
echo a.sh $1
$su - $USERNAME -c $PWD/a.sh test
a.sh
$su - $USERNAME -c "$PWD/a.sh test"
a.sh test