SSH 연결 후 루프 변수의 값이 비어 있습니다.

SSH 연결 후 루프 변수의 값이 비어 있습니다.

루프를 사용하여 원격 호스트에서 일부 명령을 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\

관련 정보