versuchen, Dateien in Verzeichnissen mit Wildcard * nachschlagen und setzen die Namen in einem Arraycsh Satz: keine Übereinstimmung Fehler Wildcard
die Dateien haben ähnliche Namen (MATCHr1, MATCHr2 ...)
die Problem entsteht, wenn die Datei nicht existiert (das ist eine Möglichkeit)
Satz Befehl gibt eine „no match“ Fehler und beendet die Schleife
wenn dies der Fall ist, wie kann ich es den Fehler behandeln, indem auf das springen nächste 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[*]
.... Rest Code funktioniert Inhalt Array verwenden Textdateien und funktioniert super zu schaffen, wenn die *${SEQR}*.nii.gz
einen Namen Datei zurückgibt
aber schlägt fehl, wenn die keine Spiele mit dem Wildcard gemacht
Jede Hilfe gut
dank apreciated würde!
Versuch eine Überprüfung auf Array-Größe hinzugefügt, nachdem Sie es ('wenn # $ Array definieren> 0') – user2141046
wo? 'ls -l * $ {SEQR} *. ni.gz' gibt zurück: keine Übereinstimmung, erlaubt aber, dass der Code auf' set Array = * $ {SEQR} * .nii.gz 'weiterläuft, was ebenfalls keine Übereinstimmung ergibt, aber das Skript beendet und geht nicht weiter zum nächsten 'SEQR' – gijoeyjoe
Sie können ls machen und das $ status (oder $ STATUS, hängt von Ihrem System) Flag abfragen:' ls -l * $ {SEQR} *. ni.gz >>/dev/Null ; wenn! $ status dann ... 'Ich bin jetzt nicht neben meiner Maschine, um die genaue Syntax zu überprüfen, aber das ist der Geist davon ... – user2141046