Следующие команды в строке не выполняются после срабатывания failglob

shopt -s failglob;
ls -l /non-existent/*; echo A;
echo B

печатает только «B» (и ошибку «не соответствует»).

http://www.gnu.org/software/bash/manual/bashref.html#Filename-Expansion

говорит, что команда, вызвавшая сбой расширения, не выполняется; но не то, что остальная часть строки игнорируется. Как ограничить влияние сбоя расширения только фактической командой?
Это под GNU bash, версия 4.2.45(1)-выпуск (i586-pc-linux-gnu) на Gentoo-Linux.


person Nico Rittner    schedule 29.05.2013    source источник
comment
сбой расширения кажется скорее исключением, чем обычной ошибкой; eval может справиться с этим, но, возможно, для этого есть более элегантное решение.   -  person Nico Rittner    schedule 29.05.2013
comment
В то время как на странице руководства говорится, что команда не выполняется, реализация фактически предотвращает запуск всего списка (т. Е. Последовательности конвейеров, соединенных &, &&, || или ;).   -  person chepner    schedule 29.05.2013


Ответы (1)


Поскольку реализация failglob кажется ошибочной, ваш единственный вариант, кроме исправления bash, может заключаться в том, чтобы не помещать дальнейшие команды в ту же строку ввода.

person Armali    schedule 29.05.2013