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