Два разных способа чтения из стандартного ввода - PullRequest
0 голосов
/ 09 мая 2019

Трудно гуглить, у меня есть это:

echo "age" |  while read line; do
    echo "$line"
done

но там есть этот стиль:

while read line; do
    echo "$line"
done < echo "age"

Во-первых, второй стиль не совсем верен, но есть ли название для первого и второго стилей? есть ли функциональная / поведенческая разница?

1 Ответ

1 голос
/ 09 мая 2019

Самое большое функциональное отличие состоит в том, что первый (в bash) запускает цикл в подоболочке.В результате $line потеряет свое значение после завершения цикла.Чтобы избежать подоболочки, вы можете встроить содержимое непосредственно в оболочку с помощью heredoc:

while read line; do
    echo "$line"
done << EOF
age
EOF
...