Предполагая, что у вас есть доступ к GNU date
, что-то вроде
$ date --date="2019-08-15" "+%B %d, %Y"
August 15, 2019
Проверьте справочную страницу дата(man date
).
из 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 по умолчанию для хранения строк, которые она читает, отбросьте аргумент имя , чтобы сохранить переменную с другим именем, строго укажите ее, вот и все.
Зачем использовать переменную с именем line
вместо переменной по умолчанию REPLY
?
Для понимания кода полезно, если имена переменных соответствуют тому, что делает код. Сравните:
files=(... )
target=...
for file in "${files[@]}"; do
something "$file" "$target"
done
против
a=(... )
b=...
for c in "${a[@]}"; do
something "$b" "$c"
done
Какой из них яснее? Если в одном из них есть ошибка, в каком из них ее легче найти?