在Bash脚本中设置变量为文件内容加上一些文本

3

如何在Redhat Linux的shell脚本中将Bash变量设置为文件内容(仅一行),然后在其后添加一些文本。

例如:

echo "Version 1.2.3.4" > $TMPDIR/devver
env=dev
export ${env}_result="`cat $TMPDIR/${env}ver` (No response - version is from cache)"
echo $dev_result

我希望输出结果为:

Version 1.2.3.4  (No response - version is from cache)

相反,我在版本后面得到了一个换行符,就像这样:
Version 1.2.3.4
(No response - version is from cache)
3个回答

3

你的问题不在变量设置上,而是在文件创建上。echo会在文件内容末尾添加一个换行符。所以使用

echo -n "Version..."

一切应该能够正常工作。


使用 printf "Version..." 而不是 echo -n "Version..." 可以获得更好的可移植性。虽然在这种情况下并不重要,但养成好习惯总是没错的。 - Barton Chittenden

2

使用bash内置命令:

export ${env}_result="$(< $TMPDIR/${env}ver) (No response - version is from cache)"
echo "$dev_result"

这里有相关的文档(点击此处): “命令替换符$(cat file)可以被等效但更快的$(< file)替换。”


1

实用程序tr可能会有所帮助:

echo "Version 1.2.3.4" | tr '\n' ' '> $TMPDIR/devver
env=dev
export ${env}_result="`cat $TMPDIR/${env}ver` (No response - version is from cache)"
echo $dev_result

测试过了 :) 它可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接