SSH를 사용하여 원격으로 명령을 실행하려고하지만 EOF에서 정의 된 변수가 선택되지 않습니다.변수가 EOF 내부에서 선택되지 않음
변수 $BASE_PATH
은 내가 이름으로 정의한 다른 변수 내에서 호출되지 않습니다. FOLDER_NAME
. 스크립트 내부에서도 언급되었습니다. 작은 따옴표로 EOF
을 사용할 수 없습니다 ('EOF'
). 쉘을 종료 할 때도 변수를 사용해야하므로 사용할 수 없습니다. 달러 기호가 내 특별 그래서 탈출하지 않는 한
#!/usr/bin/ksh
FILE_NAME=$2
jvm_list=$1
for jvm in `echo $jvm_list`
do
ssh $jvm << EOF
echo FILE_NAME=${FILE_NAME}
export BASE_PATH="\${WEB_DOMAIN_HOME}/Server";
echo BASE_PATH=\${BASE_PATH}; ##Value of BASE_PATH is getting picked up##
export FOLDER_NAME=\`ls -1d $"{BASE_PATH}"/properties* | grep -i -v old\` ##Value of BASE_PATH is coming blank here##
echo $FOLDER_NAME
EOF
done
감사합니다. 나는 당신이 말한 것과 똑같은 코드를 넣으려고했으나 효과가 없다. FOLDER_NAME에서 $ BASE_PATH의 값이 비어 있습니다. 오류 : - ls : 0653-341 파일/속성 *이 없습니다. –
@manavsharma, argh, facepalm, 거기에 추가 된 정확한 백 슬래시를 놓쳤습니다. 따라서'$ {var}'는 외부 쉘 (메인 스크립트)의 값을,'\ $ {var}'은 (ssh의) 내부 쉘의 값을 제공합니다. – ilkkachu
@kkachu, 마침내 효과가있었습니다. :) 고마워. –