我有一个类似下面代码的用例。需要从shell脚本将参数化变量/标识符导出到远程shell脚本。我使用下面的代码,但我无法导出值。请建议如何做。
#!/bin/bash
sshpass -p asdf ssh rock@host.com<<'ENDSSH'
export directory="$1"
sh /../B.sh
ENDSSH
#!/bin/bash
echo directory=$directory
mkdir $directory
#Execution
sh A.sh '/data/2017-7-7/'
#output
directory=
当我对值进行硬编码时,我在远程shell脚本中获取了值。
export directory='/data/2017-7-7/'
我想导出参数化变量,请建议如何实现。谢谢
答案 0 :(得分:1)
只需删除第一个ENDSSH
:
sshpass -p asdf ssh rock@host.com << ENDSSH
export directory="$1"
sh /../B.sh
ENDSSH
根据bash手册:
此处文件
[...]
here-documents的格式为:
[n]<<[-]word here-document delimiter
无参数和变量扩展,命令替换,算术 扩展或路径名扩展在 word 上执行。 如果有的话 word 被引用,分隔符是 word 上引用删除的结果, 并且不会展开here-document中的行。如果 word 是 如果没有引用,here-document的所有行都会受到参数的影响 扩展,命令替换和算术扩展,角色 序列
\<newline>
被忽略,\
必须用来引用 字符\
,$
和`
。[...]