使用bash将变量写入文件

时间:2016-02-11 07:21:13

标签: linux bash

我尝试使用bash脚本配置文件。并且bash脚本中的变量不会写入文件中,因为它是用脚本编写的。

例如:

#!/bin/bash

printf "%s" "template("$DATE\t$HOST\t$PRIORITY\t$MSG\n")" >> /file.txt

exit 0

这会导致模板(' tttn')而不是模板(" $ DATE \ t $ HOST \ t $ PRIORITY \ t $ MSG \ n in file。

如何在脚本中写入结果为模板(" $ DATE \ t $ HOST \ t $ PRIORITY \ t $ MSG \ n在配置文件中?

是否可以编写变量,因为它在脚本中查找文件?

2 个答案:

答案 0 :(得分:4)

用单引号括起你想要写的字符串,以避免变量替换。

> FOO=bar
> echo "$FOO"
bar
> echo '$FOO'
$FOO
> 

答案 1 :(得分:0)

在任何shell脚本中使用printf都不常见,只需使用带有echo选项的-e即可。 它允许您使用ANSI C元字符,如\t\n。但是最后\n不是必需的,因为echo会自己添加一个echo -e "template(${DATE}\t${HOST}\t${PRIORITY}\t${MSG})" >> file.txt

\t

您编写的内容存在的问题是,ANSI printf等元数字字符只能用于printf 'template(%s\t%s\t%s\t%s)\n' ${DATE} ${HOST} ${PRIORITY} ${MSG} >> file.txt first 参数。

所以它必须是这样的:

{{1}}

但我希望我们都同意,这对眼睛来说非常困难。