他のユーザーとしてシェルスクリプトの一部を実行する

他のユーザーとしてシェルスクリプトの一部を実行する

この質問は以前に要求されたが解決されていないようです。

私が試した解決策の1つは、ここのドキュメント。次のコードを使用しました。

#!/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。省略すると、区切り文字は$渡される前に補間されます。つまり、空"$DELIVER_BRANCH"の現在(呼び出しシェルの場合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;

関連情報