ユーザーが提供したuidに基づいてユーザー名を表示するbashスクリプトを作成しようとしています。
#!/bin/bash
read -p "donner l UID" cheruid
if [ $(grep -w $cheruid) -n ]
then
grep -w $cheruid /etc/passwd | cut -d ":" -f "1" | xargs echo "user is : "
else
echo "user not found"
fi
このコマンドを実行すると、端末にプロンプトメッセージのみが表示され、動作が停止します。
私は何を逃したことがありませんか?
ベストアンサー1
GNUを使用すると、id
次のことができます。
id -un -- "$cheruid"
次に、アカウントデータベース(/etc/passwd
LDAP、NIS +、RDBMS ...に保存されているかどうか)を照会して、対応するuidを持つ最初のユーザー名を見つけます。
通常、uidごとに1つのユーザー名しかありませんが、これは保証されません。ユーザーアカウントデータベースのキーは、ユーザーIDではなくユーザー名です。
特定のuidのすべてのユーザー名を知りたい場合は、次のようにします。
getent passwd | ID=$cheruid awk -F: '$3 == ENVIRON["ID"] {print $1}'
ただし、サポートされていない一部のアカウントデータベースでは機能しない可能性があります。リストできる(時には大規模なLDAPベースの場合です)。