我希望我的/etc/passwd
文件是这样的数组
[用户 ID] => [主目录]
例如
[0] => "/root"
[1000] => "/home/user1"
[1001] => "/home/user2"
所以之后,我可以设置一个条件,如果 user_id 大于 999(这意味着普通用户),则检查其目录中和.htaccess file
的值是否存在。memory_limit
display_errors
为了实现上述目标,我运行了以下命令
cat /etc/passwd | awk -F':' '{print $4,$6}'
它显示了所有
user_id home_directory
但我不知道如何将它们放入我之前提到的数组中。
因为某些用户/etc/passwd
没有主目录,所以我的数组键得到了错误的值。
请帮忙。
提前致谢。
答案1
您可以使用 shell 数组
# 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"
答案2
尝试这个
IFS=$'\n'
user=( $(awk -F':' '{print $4}' /etc/passwd | tr '\n' ' ') )
homeDir=( $(awk -F':' '{print $6}' /etc/passwd |tr '\n' ' '))
unset IFS