#!/bin/bash
tag_name=$(date "+%Y_%m_%d")
image_name=$tag_name:$4
ssh -p $3 $1@$2 << "EOF"
echo "$1" #1
echo "$2" #2
echo "tag_name:"$tag_name #3
echo "image_name:"$image_name #4
EOF
为什么调用这个脚本时,传递 4 个参数了。但是 1,2,3,4 4 个地方输出都为空呢?顺便请教下 efo 里面使用变量和给变量赋值有什么需要注意的地方?谢谢!
脚本的作用是使用传进来的参数登陆远程主机,然后根据参数做一些部署相关的操作。
1
jasonyang9 2018-10-26 11:45:57 +08:00
```
<< "EOF" ... EOF ``` 写法是 Here doc 吧?这些内容都被发送到那个 SSH 命令作为它的输入了,stdin。 执行这个脚本的机子是看不到这些 echo 内容的。 是不是这个意思? |
2
spensersheng 2018-10-26 11:49:57 +08:00
1. 参数为何为空,需要你给出如何调用的命令行例子。
2. 这里使用了“ EOF ”,会导致 HERE 文档里面所有的变量转义$失效。参考下面的区别: a=4 cat << EOF echo $a EOF 和 a=4 cat << "EOF" echo $a EOF |
3
spensersheng 2018-10-26 11:52:23 +08:00
另外,纯 shell 不推荐做复杂的 ssh 操作,建议使用 expect/tcl 或者 python、perl,ruby 之类的东东替代。
|