以前有人问过这个问题,但我似乎无法解决问题。
我尝试过的解决方案之一是使用here-document。我使用了以下代码:
#!/bin/bash
su - mv2 <<EOSU
DELIVER_BRANCH="development"
echo ${DELIVER_BRANCH}
exit;
EOSU
Run Code Online (Sandbox Code Playgroud)
我试过上面的代码,位echo ${DELIVER_BRANCH}
不打印任何东西。
你要:
#!/bin/bash
su - mv2 <<'EOSU'
DELIVER_BRANCH="development"
echo "$DELIVER_BRANCH"
exit;
EOSU
Run Code Online (Sandbox Code Playgroud)
注意第一个EOSU
. 如果你省略它们,heredoc$
在被传递之前会经历-interpolation,这意味着它"$DELIVER_BRANCH"
被替换为当前(对调用 shell 的su
)内容$DELIVERY_BRANCH
,它是空的:
DELIVERY_BRANCH=production
cat <<'EOSU'
DELIVER_BRANCH="development"
echo "$DELIVER_BRANCH"
exit;
EOSU
Run Code Online (Sandbox Code Playgroud)
印刷
DELIVER_BRANCH="development"
echo "$DELIVER_BRANCH"
exit;
Run Code Online (Sandbox Code Playgroud)
然而
DELIVERY_BRANCH=production
cat <<EOSU
DELIVER_BRANCH="development"
echo "$DELIVER_BRANCH"
exit;
EOSU
Run Code Online (Sandbox Code Playgroud)
印刷
DELIVER_BRANCH="development"
echo production
exit;
Run Code Online (Sandbox Code Playgroud)