가장 간단한 형태로, 사용자를 변경하기 위해 .here 스크립트를 사용하여 이 스크립트가 예상대로 작동하지 않는 이유가 무엇인지 혼란스럽습니다 su - user <<EOF
.
su - db2prd<<EOF
PARMDATE=1111111
echo parmdate
echo $PARMDATE
EOF
출력을 생성합니다.
parmdate
su/EOF 부분을 제거하십시오.
PARMDATE=1111111
echo parmdate
echo $PARMDATE
생산하다:
parmdate
1111111
환경이 설정되지 않았다고 가정하면 ksh 변수 할당이 작동하지 않는 이유와 작동 방법을 알 수 없습니다. 검색할 수 있는 모든 것을 시도했습니다. 이 섹션의 변수 할당이 손상된 것 같습니다 su - <<EOF
.
이는 일부 유지 관리 활동을 위해 사용자를 전환하는 대규모 스크립트의 예일 뿐입니다.
답변1
변수는 여기 문서( <<...
)에 설명되어 있으므로 평가하고 싶지 않은 변수는 이스케이프해야 합니다.
su - db2prd<<EOF
PARMDATE=1111111
echo parmdate
echo \$PARMDATE
EOF
또는 더 나은 방법은 구분 기호(여기 EOF
)를 인용하여 쉘이 이 문서에서 확장을 수행하지 않도록 지시하는 것입니다.
su - db2prd<<'EOF'
PARMDATE=1111111
echo parmdate
echo $PARMDATE
EOF