我尝试使用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在配置文件中?
是否可以编写变量,因为它在脚本中查找文件?
答案 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}}
但我希望我们都同意,这对眼睛来说非常困难。