私は、使用されているかどうかをテストするために使用される小さなシェルスクリプトを持っています。findユーザーがログインしているかどうかを確認するシェルスクリプト
#!/bin/bash
if [ $# -ne 1 ]
then
echo "Argument required"
echo "Usage: on user"
else
user="$1"
if who | grep ^"$user " > /dev/null
then
echo "$user is logged in"
else
echo "$user is not logged in"
fi
fi
これは正しく動作します。
ここに私の質問があります:私はこれを試してみると、以下のような条件の場合、シェル端末がエラーを意味します。
if [ who | grep ^"$user " > /dev/null ]
> Error ./user.sh: line 10: [: missing `]'
grep: ]: No such file or directory
これらの2つのテスト条件の違いは何ですか?簡単な言葉で
なぜ中括弧がありますか? '['。あなたが持っていたスクリプトとは違って、端末で試してみると '' '?あなたが問題になるかもしれないと結論づけるのは明らかではありませんか? – Inian