2013-05-29 87 views
2
shopt -s failglob; 
ls -l /non-existent/*; echo A; 
echo B 

只打印“B”(和“不匹配”错误)。bash:下一个命令行在failglob触发后不能执行

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

说,导致扩张失败的指令没有得到执行;但不是该行的其余部分被忽略。如何将扩展失败的影响仅限于实际的命令?
这是在GNU bash下,Gentoo-Linux上的版本4.2.45(1)-release(i586-pc-linux-gnu)

谢谢。

+0

扩展失败似乎比正常错误更多例外; eval可以处理它,但也许有一个更优雅的解决方案 –

+1

虽然手册页说“命令”没有执行,但实际上似乎阻止了整个“列表”(即,一系列由“ ','&&','||'或';')运行。 – chepner

回答

0

由于failglob的实现看起来有问题,除纠正bash之外,您唯一的选择是避免将更多命令放在同一输入行上。