shell脚本变量没有传递

时间:2017-01-12 16:40:46

标签: bash shell

我有一个像这样的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脚本。

1 个答案:

答案 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