SSH를 서버에 넣고 파일/폴더를 입력하라는 셸 스크립트를 작성하려고합니다. 내 쉘 스크립트가 오히려 큰 내가 모든 따옴표를 탈출 할 수 싶지 않기 때문에SSH heredoc : bash prompt
ssh $SERVER <<EOF
cd downloads/
read -e -p "Enter the path to the file: " FILEPATH
echo $FILEPATH
eval FILEPATH="$FILEPATH"
echo "Downloading $FILEPATH to $CLIENT"
EOF
나는이 명령을 실행하기 위해 SSH 후 큰 따옴표 대신 히어 닥을 사용하고 있습니다.
큰 따옴표를 사용할 때 프롬프트가 정상적으로 작동했습니다. 그러나 이제 heredoc을 사용하고 있으므로 프롬프트가 더 이상 작동하지 않습니다.
heredoc에서 작동하도록 프롬프트를 표시하려면 어떻게해야합니까? 그리고하지 않을 경우, 내 스크립트를 레이아웃있는 방법이 될 수 있도록 프롬프트 않습니다 따옴표로 모든 것을 감싸고과 같이, 탈출없이 일 :
ssh $SERVER "
cd downloads/
read -e -p \"Enter the path to the file: \" FILEPATH
echo $FILEPATH
eval FILEPATH=\"$FILEPATH\"
echo \"Downloading $FILEPATH to $CLIENT\"
exit
"
'<< 'EOF'로 변경하면 SSH 서버 내부의 bash 프롬프트로 이동합니다. 필자가 실제로 '프롬프트'를 사용한다는 것은 다음과 같습니다 :'read -e -p "파일의 경로를 입력하십시오 :"FILEPATH' - 스크립트는 사용자에게 파일을 요구해야합니다. –
처음에 작은 따옴표를 사용했지만 SSH 명령 앞에 정의 된'$ CLIENT'와 같은 변수에 액세스 할 수 없습니다. –
단일 인용 부호 이스케이프 해제에 대한 제안을 추가했습니다. 추한,하지만 그것이 당신을 위해 작동하는지 궁금해? – Faiz