以不同用户身份运行 shell 脚本的一部分

以不同用户身份运行 shell 脚本的一部分

这个问题之前已经被问过,但我似乎无法解决它。

我尝试的解决方案之一是使用此处文档。我使用了以下代码:

#!/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;

相关内容