루프를 사용하여 원격 호스트에서 일부 명령을 SSH로 실행하고 실행하는 스크립트를 작성하려고 합니다. 내가 가진 문제 중 하나는 for 루프를 실행할 때 null이 출력된다는 것입니다.
migration_array=($1)
Environment=$2
case "$Environment" in
"Feature")
echo "Running test on Feature"
ssh -tt [email protected] -p 1234 <<EOF
for i in ${migration_array[@]}; do
echo "file: $i"
done
exit
EOF
;;
*)
echo "unknown environment!"
;;
esac
산출
Last login: Thu Feb 13 15:52:43 2020 from 10.0.10.88
jenkins@feature:~$
> do
> echo "file: "
> done
file:
jenkins@ffeature:~$ exit
logout
Connection to 10.0.10.100 closed.
답변1
루프 변수에 슬래시를 추가하여 작동하게 만들었습니다.
echo "file: \$i"
답변2
null이 아니고 빈 문자열입니다(동일하지 않음).
당신이 겪고 있는 문제는 여기 문서( )에 의해 변수가 미리 확장되고 있다는 것입니다 <<
. 나중에 전달해야 합니다 . 따라서 전달되도록 ssh
앞에 를 넣어 이스케이프 처리하세요 .$
ssh
\