以前有人问过这个问题,但我似乎无法解决问题。
我尝试过的解决方案之一是使用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)