我有一个shell脚本,它从文本文件中提取某些值(通过终端输入)。该脚本按预期进行提取,但不会正确地将输出打印到文件中。
脚本是:
#!/bin/bash
input_file=$1
while read -r LINE
do
IFS="=" read -r -a params <<< "$LINE"
if [ -n "${params[2]}" ]
then
IFS=" " read -r -a param_opcode <<< "${params[2]}"
echo "${param_opcode}"
fi
done < "$input_file"
终端输出如下:
0xd2800140
0xd2800061
0x8b010000
0x8b000042
0xd1000821
0xd28001e5
0xd28000a6
0x9ac608a5
0xe7ff0010
0xe7ff0010
但是,当我尝试将其写入文本文件时:
echo "${param_opcodes}" > log.txt
它只打印到文件:
0xe7ff0010
我试过&gt;&gt;但我不想追加它。我希望每次都覆盖该文件,我运行脚本。
答案 0 :(得分:1)
您重定向到日志文件是不对的,因为它位于while
循环内。
使用while循环结束时的重定向:
while read -r LINE; do
...
done < "$input_file" > "log.txt"