Bash中如何在同一行将echo输出的语句赋值给变量
Bash中如何在同一行将echo输出的语句赋值给变量
嘿,这个需求其实很好解决!你想要把同一段内容既赋值给变量QSubject,又写入日志文件,完全可以在一行内实现——之前你用>直接输出到QSubject是把它当成文件处理了,所以才没达到赋值变量的效果。
给你两种实用的一行写法:
方法一:用tee同时捕获输出到变量和写入日志
QSubject="$(echo "$(date) No client_data records have been updated on $(hostname) No Records to commit." | tee -a your_log_file.log)"
$(date)和$(hostname)会自动替换成当前系统时间和主机名tee -a会把内容追加到指定的日志文件里,如果需要覆盖日志内容,去掉-a就行- 整个echo的内容通过管道传给
tee,tee一边写日志,一边把内容输出到标准输出,最后被$(...)捕获并赋值给QSubject
方法二:先赋值变量再写入日志
这种写法更直观,逻辑上先把内容存到变量里,再把变量内容写入日志:
QSubject="$(date) No client_data records have been updated on $(hostname) No Records to commit." && echo "$QSubject" | tee -a your_log_file.log
用&&连接两个命令,确保变量赋值成功后再执行写日志的操作,同样一行就能完成。
这样你后续用QSubject作为邮件主题就完全没问题啦!
备注:内容来源于stack exchange,提问作者Maaza
相关产品推荐
相关产品推荐

