目的は、ユーザー名の行を取得し、検索した人と一致する場合は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
コマンドが成功した場合、何かを実行する正式な方法です。- メンテナンス上の理由から、単一文字変数は良くありません™。