![Bash에서 SSH를 통해 변수 만들기](https://linux55.com/image/117309/Bash%EC%97%90%EC%84%9C%20SSH%EB%A5%BC%20%ED%86%B5%ED%95%B4%20%EB%B3%80%EC%88%98%20%EB%A7%8C%EB%93%A4%EA%B8%B0.png)
#!/bin/bash -x
ssh -T root@jumpbox ssh -T root@IP << EOF
YY=$(date +'%y')
echo $YY
EOF
산출:
Trying tunnel from jumpbox...
Pseudo-terminal will not be allocated because stdin is not a terminal.
-bash: line 6: YY: command not found
내가 할당해야 하는 변수는 더 복잡하며 내 설명에 표시된 것처럼 연도와 아무 관련이 없습니다.
답변1
EOF
를 인용 하지 않으면 <<EOF
여기 문서 내의 로컬 셸에 의해 확장이 수행됩니다(따라서 $(date ...)
로컬 셸에 의해 확장되고 date
로컬 $YY
셸의 값(이전에 값을 할당하지 않은 경우 비어 있음)으로 확장됩니다). 이 문서의 내용을 원격 셸에 그대로 전달하려면 EOF
어떤 식으로든 인용해야 합니다.
ssh -T root@IP << 'EOF'
YY=$(date +'%y')
echo "$YY"
EOF