Если file не содержит конца строки, то[ -f file ] && read A < file || A=
- не инициализируется переменная A
Пришлось взять в скобки
[ -f file ] && { read A < file ; } || A=
- так работает.
Т.е. не читает, если read использован с оператором && и файл без конца строки.
> Если 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 использован с оператором && и файл без
> конца строки.
Спасибо, получается, сам себе ... наступил.Маленькая поправка - проблема не в отсутствии конца строки, а в достижении конца файла.
https://www.opennet.dev/man.shtml?topic=bash&category=1
>Статус выхода - 0, если только не встретился символ конца файла.Читал учебник - не акцентирован случай с концом файла, а в man - только одна строчка про конец.