在大多数 shellnullglob中不是默认的。这意味着,例如,如果您运行此命令
ls *
Run Code Online (Sandbox Code Playgroud)
在一个空目录中,它会将*glob扩展为一个 literal *,而不是一个空的参数列表。有一些方法可以改变这种行为,这样*在一个空目录中将返回一个空的参数列表,这看起来更直观。
那么,是否有理由nullglob默认禁用?如果是,那是什么原因?
假设我有两个可能的路径,我想列出 Linux 计算机上的目录和文件:
/some/path1/
/some/path2/
Run Code Online (Sandbox Code Playgroud)
如果我在 中执行以下操作,如果或至少之一存在,tcsh我会得到退出代码:0path1path2
ls -d /some/{path1,path2}/*
Run Code Online (Sandbox Code Playgroud)
但是,如果我在 中执行完全相同的操作bash,则会收到2退出代码,并显示一条stderr消息报告path1不存在(如果 path1 是不存在的路径)。
在这种情况下我怎样才能表现bash得像这样?如果至少存在一条路径,是否有一个我可以要求它返回的tcsh开关?如果两者都不存在,我确实期望非零代码,这就是返回的内容。ls0tcsh