0

我对 mktemp 和 grep 有疑问。

OUT=$(mktemp /tmp/output.XXXXXXXXXX) || { echo "Failed to create temp file"; exit 1; }
awk -F: '{print $7}' /etc/passwd >> $OUT
grep -c $1 $OUT

在 grep 行中,代码不退出,不打印 grep 的值 请帮我解决这个问题。

4

1 回答 1

0

上面的 BlackPearl 可能是正确的 -$1在您的程序执行期间可能是空的。结果,grep 命令看起来像这样: grep -c $OUT它告诉 grep 在标准输入中查找$OUT。stdin 是键盘(我怀疑),所以 grep 将永远等待(嗯,直到你按下 Ctrl-D 或 Ctrl-C)。

要解决您的问题,请在执行脚本时指定一个参数。

您还可以通过计算 passwd 文件中的所有唯一值来完全避免该问题,如下所示:

OUT=$(mktemp /tmp/output.XXXXXXXXXX) || { echo "Failed to create temp file"; exit 1; }
awk -F: '{print $7}' /etc/passwd >> "$OUT"
sort "$OUT" | uniq -c  # count each unique value in passwd file column 7
于 2020-01-14T14:54:13.113 回答