2017-02-15 248 views
0

试图查找文件与通配符*目录,并把名字到一个数组CSH集:不匹配错误通配符

文件具有类似名称(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[*] 

....代码其余产品使用阵列的内容创建文本文件 伟大工程时,*${SEQR}*.nii.gz返回一个文件名

但是当没有比赛用通配符做失败

任何帮助都会好起来的

谢谢!

+0

尝试添加在数组大小检查你定义后('如果#$阵列> 0') – user2141046

+0

哪里? 'ls -l * $ {SEQR} *。nii.gz'返回:不匹配,但允许代码继续到'set Array = * $ {SEQR} *。nii.gz',它也返回不匹配,但脚本退出并且不会继续下一个'SEQR' – gijoeyjoe

+0

你可以做ls并检查$ status(或$ STATUS,取决于你的系统)标志:'ls -l * $ {SEQR} *。nii.gz >>/dev /空值 ;如果!$状态那么......'我现在不在我的机器旁边检查确切的语法,但这是它的精神...... – user2141046

回答

0

你可以做你LS和检查$状态(或$ STATUS,取决于你的系统)标志:
ls -l *${SEQR}*.nii.gz >> /dev/null ; if !$status then ...