将此文档传递给其他脚本

时间:2015-02-26 00:07:00

标签: bash variables redirect eof

我有一个脚本a.sh构建一个这样的文档,如下所示

read -r -d "" message << EOF
line1
line2
line3
line4

EOF

然后我想将此消息(包含四行)传递给另一个程序,所以我做了

b.sh $message

然而在b.sh中我做了

reMess=$1
cat $reMess

它只显示line1而不显示其余3行,是否有人可以解释我应该怎样做才能实现这一目标?

第二个问题我改变了a.sh中的代码,使得消息存储在一个文件中,然后从b.sh中读取,有人可以在b.sh中建议我怎样才能在这里找到这个文件。代码详情如下

a.sh
read -r -d "" message << EOF
line1
line2
line3
line4

EOF
echo "$message" > /tmp/message.txt

b.sh
read -r -d "" information << EOF
inforation1
$(cat /tmp/message.txt)
EOF
echo "$information"

它没有任何建议在哪里错了? 谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

我看到你的代码唯一的问题是它不必要地复杂。

message='line1
line2
line3
line4'

information="information1
$message"  # need double quotes rather than single to interpolate $message

如果您不喜欢嵌入式换行符,Bash会使用C字符串语法。

message=$'line1\nline2\nline3\nline4'

但这确实没有任何好处,它阻碍了其他炮弹的可移植性。您将习惯于快速使用多行字符串。