如何将命令输出存储在变量中并重定向到同一行中的文件?

时间:2018-03-21 16:40:27

标签: bash

a=`cat /etc/redhat-release | awk '{print $2}' > /tmp/a.txt`

以上命令不会将输出重定向到文件。

1 个答案:

答案 0 :(得分:2)

命令替换捕获包含的命令的stdout。当您将该输出重定向到文件时,它不再在stdout上,因此不再捕获它。

使用tee创建两个副本 - 一个在文件中,一个在stdout上。

a=$(awk '{print $2}' </etc/redhat-release | tee /tmp/a)

另请注意:

    在不需要时不应使用
  • cat:给输入文件awk直接处理可以节省额外的过程,允许从文件而不是FIFO直接写入 - - 并且正在遵循这样的做法,即通过sortshuftailwc -c这样的程序生成效率更高的游戏,这些程序可以使用更高效的算法文件。
  • 命令替换的现代(和标准兼容,自1991年以来)语法是$(...)。它比它取代的古老反引语语法更好地嵌套,并且使用反斜杠更容易混淆。