我对 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 的值 请帮我解决这个问题。
上面的 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