您将对不安全的内容使用 eval。
更好地将其重定向到一个块上,并使用进程替换:
{
rm aaa
# ... other commands
} 2> >(
while read -r LINE; do
echo "$LINE"
echo '<br><br>'
done >> error_file
)
<br><br>
最后只写一次的另一种方式:
{
rm aaa
# ... other commands
} 2> >(
if read -r LINE; then
while
echo "$LINE"
read -r LINE
do
continue
done
echo '<br><br>'
fi >> error_file
)
这个<br><br>
即使没有错误也会写,最后只写一次:
{
rm aaa
# ... other commands
} 2>> error_file
echo '<br><br>' >> error_file
请注意,如果您只使用一个命令,例如rm
,则不必将其放在块内,只需rm aaa 2>> >( ...
. 而且我认为您只需要一行:
rm aaa 2>> >(read -r LINE && echo "$LINE"$'\n''<br><br>' >> error_file)
其他:
EFILE=/path/to/error_file
rm aaa 2> >(read -r LINE && echo "$LINE"$'\n''<br><br>' >> "$EFILE")
命令特定功能:
EFILE=/path/to/error_file
function log_error_to_file {
read -r LINE && echo "$LINE"$'\n''<br><br>' >> "$EFILE"
}
rm aaa 2> >(log_error_to_file)
another_command 2> >(log_error_to_file)
多行:
function log_error_to_file {
while read -r LINE; do
echo "$LINE"
echo '<br><br>'
done >> error_file
}