"etc/passwd"ファイルにキー値の配列を書き込むbashスクリプト

私の/etc/passwdファイルが次のような配列であることを望みます。

[ユーザーID] => [ホームディレクトリ]

例えば

[0]      =>  "/root"
[1000]   =>  "/home/user1"
[1001]   =>  "/home/user2"

その後、user_idが999(一般ユーザーを意味)より大きい場合は、.htaccess fileそのディレクトリにsum値があるかどうかを確認する条件を設定できます。memory_limitdisplay_errors

上記の結果を達成するために、次のコマンドを実行しました。

cat /etc/passwd | awk -F':' '{print $4,$6}'

それはすべてを示しています

user_id home_directory

しかし、前述の配列にどのように入れるのかわかりません。

一部のユーザーには/etc/passwdホームディレクトリがないため、配列キーに無効な値が表示されます。

助けてください。

よろしくお願いします。

ベストアンサー1

シェル配列を使用できます

# Associative array p
declare -A p=()

# Populate the array (x is a placeholder that we otherwise ignore)
while IFS=: read -r x x uid x x home x
do
    p[$uid]=$home
done </etc/passwd

# Demonstrate the data
for uid in "${!p[@]}"
do
    printf "[%s]\t=> \"%s\"\n" "$uid" "${p[$uid]}"
done

出力例

[1000]  => "/home/pi"
[0]     => "/root"
[1]     => "/usr/sbin"
[33]    => "/var/www"

おすすめ記事