目标是获取用户名行,如果它与 who 搜索匹配,则对其运行 w 命令,否则说明该人不在线。
read -p "Enter User ID's: " str
for i in [ $str ];
do
if [ who -u | grep -q $i ];
then
echo $i
w -u $i
else
echo $i
echo user is not logged in
done
答案1
tl;dr 使用for id in $str
代替for i in [ $str ];
和if who -u | grep -q "$id"
代替if [ who -u | grep -q $i ];
。
- 里面的东西
[ … ]
是一个条件表达式,这与命令不同。 [ … ]
不打印任何东西,所以for
如果你包裹在循环中,循环就没有任何东西可以使用$str
。if COMMAND
是命令成功时运行某些内容的规范方式。- 出于可维护性的原因,单字母变量是一个坏主意™。