URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 10168
[ Назад ]

Исходное сообщение
"Непонятная работа команды read"

Отправлено Alexander7 , 20-Июл-17 01:25 
Если file не содержит конца строки, то

[ -f file ] && read A < file || A=

- не инициализируется переменная A

Пришлось взять в скобки

[ -f file ] && { read A < file ; } || A=

- так работает.

Т.е. не читает, если read использован с оператором && и файл без конца строки.


Содержание

Сообщения в этом обсуждении
"Непонятная работа команды read"
Отправлено Andrey Mitrofanov , 20-Июл-17 09:25 
> Если file не содержит конца строки, то
> [ -f file ] && read A < file || A=
> - не инициализируется переменная A

"не содержит конца строки" => read возвращает rc=1 и ты _сам_ делаешь A="".

$ read A < <(echo -n 123); echo rc=$?  A=$A
rc=1 A=123
$ read A < <(echo 123); echo rc=$?  A=$A
rc=0 A=123

> Т.е. не читает, если read использован с оператором && и файл без
> конца строки.


"Непонятная работа команды read"
Отправлено Alexander7 , 20-Июл-17 15:21 
Спасибо, получается, сам себе ... наступил.

Маленькая поправка - проблема не в отсутствии конца строки, а в достижении конца файла.
https://www.opennet.dev/man.shtml?topic=bash&category=1
>Статус выхода - 0, если только не встретился символ конца файла.

Читал учебник - не акцентирован случай с концом файла, а в man - только одна строчка про конец.