2017-02-15 110 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 ...