无法正确地在ssh会话中声明shell变量

时间:2017-03-14 19:40:17

标签: bash ssh

我正在尝试使用当前时间戳在远程服务器上创建目录。为此我需要以下代码才能工作。

#!/usr/bin/env bash

ssh -l pi something.com -p 8888 << EOF
  CURRENT_TIMESTAMP=`date +%s`
  echo "creating directory with timestamp $CURRENT_TIMESTAMP"
EOF

但是当我看到echo命令的输出时,$CURRENT_TIMESTAMP值完全丢失。如果我ssh到远程计算机并逐个运行每个命令,一切都按预期工作。

1 个答案:

答案 0 :(得分:2)

尝试

ssh -l pi something.com -p 8888 << "EOF"
  CURRENT_TIMESTAMP=`date +%s`
  echo "creating directory with timestamp $CURRENT_TIMESTAMP"
EOF

并查看man -P'less +/<<' bash

  

...如果引用了单词中的任何字符,则分隔符是单词上引号删除的结果,并且不会展开here-document中的行。如果单词不加引号,则here-document的所有行都要进行参数扩展...