크쉬"<

크쉬"<

가장 간단한 형태로, 사용자를 변경하기 위해 .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

관련 정보