Jawaban:
Anda sebenarnya tidak memerlukan loop sementara jika niat Anda hanya untuk membuat daftar nama. Juga ada kesalahan sintaks setelah login=
, seharusnya tidak ada ruang.
cut -d: -f1 /etc/passwd | \
while read login;
do
echo username: $login;
done
atau ketika Anda mencoba:
while read line; do
login=$(echo $line | cut -d : -f 1)
echo $login
done < /etc/passwd
bahkan lebih baik:
db-getent passwd |cut -d: -f1 | xargs -L1 echo name:
Biarkan read
perintah bersama dengan shell IFS
variabel menguraikan baris untuk Anda:
while IFS=: read -r login restOfLine; do
doSomethingWith $login
done < /etc/passwd
Untuk menjawab pertanyaan Anda, bash-string di sini akan bermanfaat:
login=$(cut -d: -f1 <<< "$line")
getent
. Dalam contoh pertama Anda, kelanjutan garis tidak diperlukan setelah pipa.