我有一个脚本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"
它没有任何建议在哪里错了? 谢谢你的帮助
答案 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'
但这确实没有任何好处,它阻碍了其他炮弹的可移植性。您将习惯于快速使用多行字符串。