BashでSSHを介して変数を作成する

BashでSSHを介して変数を作成する
#!/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  

関連情報