다른 사용자로 쉘 스크립트의 일부 실행

다른 사용자로 쉘 스크립트의 일부 실행

이 질문은 이전에 요청되었지만 해결되지 않는 것 같습니다.

내가 시도한 솔루션 중 하나는여기 문서. 다음 코드를 사용했습니다.

#!/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"있는 현재(호출 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;

관련 정보