essayant de rechercher des fichiers dans des répertoires avec * générique, et mettre les noms dans un tableaucsh jeu: aucune erreur de caractère générique correspondant
les fichiers ont des noms similaires (MATCHr1, MATCHr2 ...)
la problème se pose lorsque le fichier n'existe pas (ce qui est une possibilité)
commandeset renvoie une erreur « pas de correspondance » et se termine la boucle
si cela se produit comment puis-je obtenir gérer l'erreur en sautant à la prochaine itération?
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[*]
.... reste du code fonctionne pour utiliser le contenu de Array pour créer des fichiers texte et fonctionne très bien lorsque le *${SEQR}*.nii.gz
retourne un nom de fichier
mais échoue lorsque les matchs sont pas faits avec le caractère générique
Toute aide serait bien aprécié
merci!
essayer d'ajouter un contrôle sur la taille du tableau après que vous définissez ('si # $ array> 0') – user2141046
où? 'ls -l * $ {SEQR} *. nii.gz' renvoie: pas de correspondance mais permet au code de continuer sur' set Array = * $ {SEQR} *. nii.gz' qui ne renvoie pas non plus de correspondance mais le script se termine et ne continue pas à la prochaine 'SEQR' – gijoeyjoe
vous pouvez vous faire ls et vérifier le statut $ (ou $ STATUS, dépend de votre système) flag: 'ls -l * $ {SEQR} *. nii.gz >>/dev/nul ; if! $ status then ... 'Je ne suis pas à côté de ma machine maintenant pour vérifier la syntaxe exacte, mais c'est l'esprit ... – user2141046