我有一个如下所示的 shell 脚本:
foreach dir (i686.* amd64.*)
  # commands
end
此脚本的问题在于,如果没有与这些名称匹配的目录,则会出现以下错误:
"foreach: No match."
防止此错误的优雅方法是什么?
这里有两种方法来处理这个问题。
设置 shell 的nonomatch变量。这告诉 tcsh 如果模式与任何文件都不匹配,则保持模式不变。因此:
% set nonomatch=1
% echo i686.* amd64.*
i686.* amd64.*
然后,您需要使命令处理不匹配模式的情况。
传递一个始终匹配的额外模式。例子:
% echo i686.* amd64.* /dev/nul[l]
/dev/null
然后,您需要使命令忽略与始终匹配模式匹配的文件。这可能比#1 更容易。