【发布时间】:2020-05-28 08:28:50
【问题描述】:
我想做的是一个简单的练习代码,输出如下:
user1 logged in at hh:mm
user2 logged in at hh:mm
...
所以我写了一个基本的 for 循环,但我不明白为什么它只运行一次。
for user in $(who)
do
USERID=$(echo $user | tr -s ' ' | cut -d' ' -f1)
LOGTIME=$(echo $user | tr -s ' '| cut -d' ' -f4)
echo "$USERID logged in at $LOGTIME"
done
这与以下内容相呼应:
user1
user2
user3 logged in at hh:mm
hh:mm
hh:mm
我已经在两者之间放置了回显线来弄清楚发生了什么以及如何修复它,但我唯一发现的是 for 循环只运行一次,所以 USERID 和 LOGTIME 只是一个长字符串换行符。我究竟做错了什么? (我做了 IFS=$'\n')
【问题讨论】:
-
尝试使用 while 循环而不是 for 来阅读。
while read user do echo $user done < $(who) -
@DigvijayS 这对我不起作用。出于某种原因,它在 $(who) 上给了我一个“没有这样的文件或目录”错误