这个问题之前已经被问过,但我似乎无法解决它。
我尝试的解决方案之一是使用此处文档。我使用了以下代码:
#!/bin/bash
su - mv2 <<EOSU
DELIVER_BRANCH="development"
echo ${DELIVER_BRANCH}
exit;
EOSU
我尝试了上面的代码,位echo ${DELIVER_BRANCH}
没有打印任何内容。
答案1
你要:
#!/bin/bash
su - mv2 <<'EOSU'
DELIVER_BRANCH="development"
echo "$DELIVER_BRANCH"
exit;
EOSU
请注意第一个周围的单引号EOSU
。如果省略它们,则定界符$
在传递之前会经历 -interpolation,这意味着"$DELIVER_BRANCH"
被替换为 的当前(对于调用 的 shell su
)内容$DELIVERY_BRANCH
,该内容为空:
DELIVERY_BRANCH=production
cat <<'EOSU'
DELIVER_BRANCH="development"
echo "$DELIVER_BRANCH"
exit;
EOSU
印刷
DELIVER_BRANCH="development"
echo "$DELIVER_BRANCH"
exit;
然而
DELIVERY_BRANCH=production
cat <<EOSU
DELIVER_BRANCH="development"
echo "$DELIVER_BRANCH"
exit;
EOSU
印刷
DELIVER_BRANCH="development"
echo production
exit;