#!/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