ユーザーを見つける必要があり、そのユーザーがシステムにない場合、コマンドはゼロ以外の戻りコードで終了する必要があります。でこれを行うことはできますが、スクリプトではなく行bash
コマンドで必要です。bash
それは可能ですか?
答え1
システムにユーザーが存在するかどうかをテストする良い方法は、を使用することです。getent
このgetent
ユーティリティは、さまざまな「データベース」からさまざまな情報を返すことができますpasswd
(たとえば、利用可能なログインシェルのエクスポート)。group
getent
ユーザーがtestuser
システムにいるかどうかをテストするには、ユーザーのエントリを要求getent
しますpasswd
。
getent passwd testuser
passwd
成功すると、1つの項目が出力され、終了ステータスは0になりますgetent
。失敗した場合、出力はなく、終了ステータスはゼロではありません。私はこれがあなたが要求したコマンドだと思います。
ユーティリティによって生成されたすべての出力を削除し、if
次の文で使用できます。
theuser=testuser
if getent passwd "$theuser" >/dev/null
then
printf 'The user "%s" exists\n' "$theuser"
else
printf 'The user "%s" does not exist\n' "$theuser"
fi
もちろん/etc/passwd
、いくつかのコマンドを使用してファイルを直接解析することはできますが、grep
これはエラーが発生しやすく(getent
上記の使用法と比較して)、いくつかの形式のディレクトリサービスを使用するシステムでは正しく機能しません。