0

尝试使用通配符 * 在目录中查找文件,并将名称放入数组中

这些文件具有相似的名称(MATCHr1、MATCHr2 ...)

当文件不存在时会出现问题(这是可能的)

set 命令返回“不匹配”错误并终止循环

如果发生这种情况,我怎样才能通过跳转到下一次迭代来处理错误?

set SUBIDS = (10003 10005 10006)

foreach SUBID ($SUBIDS)

foreach SEQR ( MATCH ENC NBACK SIMON FACE )

ls -l  *${SEQR}*.nii.gz

set Array = *${SEQR}*.nii.gz

echo $Array[*]

....其余代码可以使用 Array 的内容来创建文本文件,并且在*${SEQR}*.nii.gz返回文件名时效果很好

但是当没有与通配符匹配时失败

任何帮助将不胜感激

谢谢!

4

1 回答 1

0

您可以执行 ls 并检查 $status(或 $STATUS,取决于您的系统)标志:
ls -l *${SEQR}*.nii.gz >> /dev/null ; if !$status then ...

于 2017-02-22T06:55:26.283 回答