내 /etc/passwd
파일이 다음과 같은 배열이기를 원합니다.
[사용자ID] => [홈디렉토리]
예를 들어
[0] => "/root"
[1000] => "/home/user1"
[1001] => "/home/user2"
그런 다음 user_id가 999(일반 사용자를 의미)보다 큰 경우 .htaccess file
해당 디렉터리에 sum 값이 있는지 확인하는 조건을 설정할 수 있습니다.memory_limit
display_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"
답변2
이 시도
IFS=$'\n'
user=( $(awk -F':' '{print $4}' /etc/passwd | tr '\n' ' ') )
homeDir=( $(awk -F':' '{print $6}' /etc/passwd |tr '\n' ' '))
unset IFS