创建临时文件并通过一个命令将输出重定向到该文件

Tra*_*rke 5 unix bash shell

我设计了一个自定义脚本来 grep 备份文件的串联列表.bash_history。在我的脚本中,我创建一个临时文件并将mktemp其保存到变量temp. 接下来,我使用该命令将输出重定向到该文件cat

\n\n

有没有一种方法可以创建临时文件(使用mktemp),将输出重定向到该文件,然后将其存储在一个命令中的变量中,同时保留换行符?

\n\n

下面的代码片段工作得很好,但我有一种感觉,有一种更简洁和规范的方法可以在一行 \xe2\x80\x93 中实现这一点,也许使用进程替换或类似的东西。

\n\n
# Concatenate all .bash_history files into a temporary file `temp`.\ntemp="$(mktemp)"\ncat "$HOME/.bash_history."* > $temp\ntrap \'rm -f $temp\' 0\n\n# Set `HISTFILE` shell variable to the `temp` file.\nHISTFILE="$temp"\n\nkeyword="$1"\n\n# Search for `keyword` using the `history` command\nif [[ "$keyword" ]]; then\n    # Enable history\n    set -o history\n\n    history | grep "$keyword"\n\n    # Disable history\n    set +o history\nelse\n    echo -e "usage: search <keyword>"\n    exit 0\nfi\n
Run Code Online (Sandbox Code Playgroud)\n

Cha*_*ffy 5

tempfile如果您对以先前不具有非空值为条件进行赋值的副作用感到满意,那么通过${var:=value}扩展这很简单:

cat "$HOME/.bash_history" >"${tempfile:=$(mktemp)}"
Run Code Online (Sandbox Code Playgroud)