A voir également:
- Comparaison script csh
- Script vidéo youtube - Guide
- Comparaison million milliard - Accueil - Technologies
- Ghost script - Télécharger - Polices de caractères
- Script bat - Guide
- Microsoft activation script - Accueil - Windows
5 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
19 oct. 2007 à 09:49
19 oct. 2007 à 09:49
Salut,
#! /bin/csh @ A = "$1" if ( "$A" > = 1 && "$A" < = 4 ) then echo "OK" else echo "NOK" endifCe qui donne :
$ ./foo.csh 2 OK $ ./foo.csh 0 NOK $ ./foo.csh 1 OK $ ./foo.csh 5 NOK $;-))
J'ai envie de te dire.... Formidable.
Je teste dès que je peux et je te tiendrais au courant du résultat, mais cela me semble être ce que j'attendais...
Merci.
Je teste dès que je peux et je te tiendrais au courant du résultat, mais cela me semble être ce que j'attendais...
Merci.
En fait ce n'est pas si facile que cela à imbriquer dans mon script...
Le script dans le quel je fais ce test c'est le .login (j'aurai du préciser ce point avant). Je dois charger un path différent selon que le user se trouve sur un des nodes ou sur le master. J'ai certaine machines avec un hostname comportant 'node", je veux donc récupérer exclusivement les machine avec un hostname node$numero.
J'aurai voulu quelque chose du genre expression rationnelle:
if ( `hostname` == node[0-9] ) then
echo "We are on a node"
else
echo "We are NOT on a node"
fi
Mais je ne sais pas si c'est possible sous csh.
Le problème est que je ne peux pas récupérer le $A de ton script, en tout cas pas simplement, et comme c'est le point login je voudrais éviter de le charger avec des hostname, grep et sed...
Le script dans le quel je fais ce test c'est le .login (j'aurai du préciser ce point avant). Je dois charger un path différent selon que le user se trouve sur un des nodes ou sur le master. J'ai certaine machines avec un hostname comportant 'node", je veux donc récupérer exclusivement les machine avec un hostname node$numero.
J'aurai voulu quelque chose du genre expression rationnelle:
if ( `hostname` == node[0-9] ) then
echo "We are on a node"
else
echo "We are NOT on a node"
fi
Mais je ne sais pas si c'est possible sous csh.
Le problème est que je ne peux pas récupérer le $A de ton script, en tout cas pas simplement, et comme c'est le point login je voudrais éviter de le charger avec des hostname, grep et sed...
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
19 oct. 2007 à 11:25
19 oct. 2007 à 11:25
Le "csh" c'est obligé ?
Parce qu'il est moins malléable que le bash ;-((
Parce qu'il est moins malléable que le bash ;-((
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
19 oct. 2007 à 12:28
19 oct. 2007 à 12:28
C'est un peu lourd mais c'est tout ce que j'ai trouvé sur du "csh" :
#! /bin/csh set var = "node$1" switch ("$var") case node0: echo $var : OK; breaksw case node1: echo $var : OK; breaksw case node2: echo $var : OK; breaksw case node3: echo $var : OK; breaksw case node4: echo $var : OK; breaksw case node5: echo $var : OK; breaksw case node6: echo $var : OK; breaksw case node7: echo $var : OK; breaksw case node8: echo $var : OK; breaksw case node9: echo $var : OK; breaksw default: echo NOK; breaksw endswRésultat des courses :
$ csh bar.csh 2 node2 : OK $ csh bar.csh 10 NOK $ csh bar.csh 1 node1 : OK $ csh bar.csh m NOK $;-))
Salut,
ceci peut être fait de façon très simple grâce à la commande expr:
La commande expr retourne le nombre de caractères du paramètre qui correspondent à l'expression régulière. Dans cet exemple, l'expression régulière est très strict (on spécifie ce qui commence et termine la ligne) donc si le paramètre ne correspond pas, expr retourne 0.
Voici le résultat lors de l'exécution du script:
Les avantages sont que le script est très court, qu'il est facile de le passer en sh si nécessaire et qu'il est facile de le maintenir en cas de changement de nom de machine.
Olivier
ceci peut être fait de façon très simple grâce à la commande expr:
#! /bin/csh set MY_HOST=$1 if ( `expr $MY_HOST : '^node[0-9]*$'` != 0 ) then echo OK else echo KO endif
La commande expr retourne le nombre de caractères du paramètre qui correspondent à l'expression régulière. Dans cet exemple, l'expression régulière est très strict (on spécifie ce qui commence et termine la ligne) donc si le paramètre ne correspond pas, expr retourne 0.
Voici le résultat lors de l'exécution du script:
>truc node2 OK >truc node54 OK >truc mynode KO >truc nodespe KO >truc node54spe KO
Les avantages sont que le script est très court, qu'il est facile de le passer en sh si nécessaire et qu'il est facile de le maintenir en cas de changement de nom de machine.
Olivier