Tal*_*ali 1 bash ssh shell-script
#!/bin/bash -x
ssh -T root@jumpbox ssh -T root@IP << EOF
YY=$(date +'%y')
echo $YY
EOF
Run Code Online (Sandbox Code Playgroud)
输出:
Trying tunnel from jumpbox...
Pseudo-terminal will not be allocated because stdin is not a terminal.
-bash: line 6: YY: command not found
Run Code Online (Sandbox Code Playgroud)
我需要分配的变量更复杂,它不是我的描述中显示的年份编号。
当您不引用EOF
in 时<<EOF
,扩展由 here 文档内的本地 shell 执行(因此$(date ...)
由本地扩展date
并$YY
扩展为本地 shell 中的值(空,除非您之前已分配值))。如果您将 here-document 的内容逐字传递给远程 shell,则需要以EOF
一种或另一种方式引用:
ssh -T root@IP << 'EOF'
YY=$(date +'%y')
echo "$YY"
EOF
Run Code Online (Sandbox Code Playgroud)