在 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

当您不引用EOFin时<<EOF,扩展由此处文档内的本地 shell 执行(因此,$(date ...)由本地 shell 扩展date$YY扩展为本地 shell 中的值(为空,除非您之前已分配了值))。如果要将此处文档的内容逐字传递到远程 shell,则需要以EOF一种或另一种方式引用:

ssh -T root@IP << 'EOF'
YY=$(date +'%y')
echo "$YY"
EOF  

相关内容