使用for循环展示登录用户列表时echo输出结果异常如何解决
问题根因
- 现有代码
for循环的迭代对象是who | wc -l的输出,即登录用户的总数量(单个数字),因此整个循环只会执行1次 - 单次循环内执行的
$(who | cut -d' ' -f1)会输出所有登录用户的用户名(逐行换行),最后只在整体输出的末尾拼接1次is here.,最终就得到了你遇到的错误输出结果
修复方案
直接遍历所有登录用户名即可实现预期效果:
for user in $(who | cut -d' ' -f1) do echo "$user is here." done
如果需要兼容用户名包含空格的极端场景,可以使用while循环写法:
who | cut -d' ' -f1 | while read -r user do echo "$user is here." done
内容的提问来源于stack exchange,提问作者Luna
相关产品推荐
相关产品推荐

