我设计了一个自定义脚本来 grep 备份文件的串联列表.bash_history。在我的脚本中,我创建一个临时文件并将mktemp其保存到变量temp. 接下来,我使用该命令将输出重定向到该文件cat。
有没有一种方法可以创建临时文件(使用mktemp),将输出重定向到该文件,然后将其存储在一个命令中的变量中,同时保留换行符?
下面的代码片段工作得很好,但我有一种感觉,有一种更简洁和规范的方法可以在一行 \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\nRun Code Online (Sandbox Code Playgroud)\n
tempfile如果您对以先前不具有非空值为条件进行赋值的副作用感到满意,那么通过${var:=value}扩展这很简单:
cat "$HOME/.bash_history" >"${tempfile:=$(mktemp)}"
Run Code Online (Sandbox Code Playgroud)