Поскольку чтение имеет встроенную переменную $REPLY, зачем нам явно указывать $line или другую переменную

Предполагая, что у вас есть доступ к GNU date, что-то вроде

$ date --date="2019-08-15" "+%B %d, %Y"
August 15, 2019

Проверьте справочную страницу дата(man date).

0
16.09.2021, 18:02
2 ответа

из man bash,If no names are supplied, the line read is assigned to the variable REPLY.во второй попытке нет имени, поэтому по умолчанию оно сохраняется в переменной REPLY.

пример:

$ cat infile
1
2
3

$ while read ; do echo $REPLY; done <infile
1
2
3

, но(REPLYпеременная )не устанавливается, когда вы указываете имя, и в этом случае вместо этого текущая строка считывается в указанное имя.

$ while read tmp; do echo $REPLY; done <infile



$

Why or when is one preferred over the other?

Это ясно и зависит от вас, когда вы хотите использовать переменную REPLY по умолчанию для хранения строк, которые она читает, отбросьте аргумент имя , чтобы сохранить переменную с другим именем, строго укажите ее, вот и все.

1
16.09.2021, 18:24

Зачем использовать переменную с именем lineвместо переменной по умолчанию REPLY?

Для понимания кода полезно, если имена переменных соответствуют тому, что делает код. Сравните:

files=(... )
target=...
for file in "${files[@]}"; do
    something "$file" "$target"
done

против

a=(... )
b=...
for c in "${a[@]}"; do
    something "$b" "$c"
done

Какой из них яснее? Если в одном из них есть ошибка, в каком из них ее легче найти?

3
16.09.2021, 18:40

Теги

Похожие вопросы