bash - Bash脚本不会在tempfile中输出任何数据

bash - Bash脚本不会在tempfile中输出任何数据,第1张

这是我使用的代码,我想从一个文件中的4个日志文件中收集数据,然后对其进行排序并打印临时文件名。

#!/bin/bash

TEMPFILE=$(mktemp)
USER=

# Check for input
#if [ -z  ]; then echo "Give me one username or mail address please..."

# Fill file with user history
cat /var/log/messages | grep $USER >> $TEMPFILE
cat /var/log/maillog | grep $USER >> $TEMPFILE
zcat /var/log/messages*gz | grep $USER >> $TEMPFILE
zcat /var/log/maillog*gz | grep $USER >> $TEMPFILE

# Sort by date
cat $TEMPFILE | sort -k1M -k2n -k3n > $TEMPFILE

echo $TEMPFILE

最佳答案:

1 个答案:

答案 0 :(得分:0)

catzcat无处不在,您无法重定向到您正在阅读的同一个文件,这将为您提供一个0字节的文件。

试试这个:

#!/bin/bash

TEMPFILE=$(mktemp)
user=""

# Check for input
#if [ -z  ]; then echo "Give me one username or mail address please..."

# Fill file with user history
grep "$user" /var/log/messages >> $TEMPFILE
grep "$user" /var/log/maillog >> $TEMPFILE
zgrep "$user" /var/log/messages*gz >> $TEMPFILE
zgrep "$user" /var/log/maillog*gz >> $TEMPFILE

# Sort by date
sort -k1M -k2n -k3n "$TEMPFILE" > "$TEMPFILE.tmp"
mv "$TEMPFILE.tmp" "$TEMPFILE"

cat "$TEMPFILE"

PS:不要使用大写USER作为变量运行,否则你将覆盖shell为此变量提供值。通常,不建议在脚本中使用所有大写变量。

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复