답변:
당신의 의도가 단지 이름을 나열하는 것이라면 while 루프는 실제로 필요하지 않습니다. 또한 구문 오류가 있습니다. login=
, 공간이 없어야합니다.
cut -d: -f1 /etc/passwd | \
while read login;
do
echo username: $login;
done
또는 시도한대로 :
while read line; do
login=$(echo $line | cut -d : -f 1)
echo $login
done < /etc/passwd
더 나은 :
db-getent passwd |cut -d: -f1 | xargs -L1 echo name:
하자 read
쉘과 함께 명령 IFS
가변 당신을위한 선을 분석하십시오 :
while IFS=: read -r login restOfLine; do
doSomethingWith $login
done < /etc/passwd
귀하의 질문에 대답하기 위해 bash here-string이 유용 할 것입니다 :
login=$(cut -d: -f1 <<< "$line")
getent
. 첫 번째 예에서는 파이프 다음에 줄 연속이 필요하지 않습니다.