问题描述
尝试使用通配符*查找目录中的文件,并将名称放入数组
trying to look up files in directories with wildcard *, and put the names into an array
文件具有相似的名称(MATCHr1,MATCHr2 ...)
the files have similar names (MATCHr1, MATCHr2 ... )
当文件不存在时可能会出现问题(有可能)
the problem arises when the file does not exist (which is a possibility)
set命令返回 no匹配错误并终止循环
set command returns a "no match" error and terminates the loop
如果发生这种情况,我如何通过跳转到下一个迭代来处理错误?
if this happens how can i get it handle the error by jumping to the next iteration?
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[*]
....其余代码可使用以下内容创建文本文件
的数组,当 * $ {SEQR} *。nii.gz
返回文件名
....rest of code works to use contents of Array to create text filesand works great when the *${SEQR}*.nii.gz
returns a file name
,但在不使用通配符进行匹配时失败
but fails when the no matches are made with the wildcard
任何帮助都将得到很好的补偿
Any help would be well apreciated
谢谢!
推荐答案
您可以这样做并检查$ status (或$ STATUS,取决于您的系统)标志:
ls -l * $ {SEQR} *。nii.gz> / dev / null;如果!$ status然后...
you can do you ls and check the $status (or $STATUS, depends on your system) flag:ls -l *${SEQR}*.nii.gz >> /dev/null ; if !$status then ...
这篇关于csh设置:无匹配错误通配符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!