Моя основная задача - извлечь только имя пользователя из файла/etc/passwd
и сохранить его в списке массивов, я могу отображать их один за другим, для этого я создал простой скрипт, как показано ниже
#!/bin/bash
cat "/etc/passwd" > OUTPUT
echo -e $OUTPUT
IFS=:
read -ra ADDR <<< "$OUTPUT"
for i in "${ADDR[@]}"; do
echo -e $i
done
И выход
> cat /etc/passwd
root:$1$L15vXdMd$SVx9qKAzHtLcqGN8n2SIc.:0:0:root:/:/bin/sh
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/bin/false
super:x:1111:1100:Ldap user:/opt/www/usr/super:/bin/sh
admin:x:1107:1100:Ldap user:/opt/www/usr/admin:/opt/www/jv/bin/cliInit.sh
guest:x:1101:1100:Ldap user:/opt/www/usr/guest:/opt/www/jv/bin/cliInit.sh
postgres:x:1000:1000:Linux User,,,:/home/postgres:/bin/sh
albert:x:1114:1100:Ldap user:/opt/wwwl/usr/albert:/opt/www/jv/bin/cliInit.sh
ritesh112:x:1125:1001:RADIUS user:/opt/www/usr/ritesh112:/opt/dell/mc/bin/cliInit.sh
может быть, я делаю неправильный путь (поэтому я задаю вопрос) в приведенном выше скрипте. Согласно моей логике сначала перенаправьте /etc/passwd
на любую переменную с помощью (cat "/etc/passwd" > OUTPUT
не знаю это правильно или неправильно Также в качестве альтернативы пробовали read -ra ADDR <<< "cat /etc/passwd"
, но не работают ), затем разделите вывод IFS=:
переменной bash и сохраните все имена пользователей в массиве ADDR
.
Я ожидаю, что вывод скрипта будет следующим, за исключением имен пользователей sshd
и postgres
.
root
super
admin
guest
albert
ritesh112
Но это не работает ни у кого есть идея?