Как правильно передать $ line в команду cut в этом цикле?
while read line
do
login= $(cut -d : -f 1)
done < /etc/passwd
Я не могу сделать $(cut -d : -f 1 $line)
так что это правильный путь?
Позвольте команде read
вместе с переменной IFS
оболочки проанализировать строку для вас:
while IFS=: read -r login restOfLine; do
doSomethingWith $login
done < /etc/passwd
Чтобы ответить на ваш вопрос, полезна строка здесь:
login=$(cut -d: -f1 <<< "$line")
Используйте эхо:
login=$(echo "$line" | cut -d : -f 1)
На самом деле вам не нужен цикл 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: