Rechercher : dans
Par :

Nième paramètre d'un script

Dernière réponse le 28 jun 2007 à 15:49:18 FMA, le 6 mai 2005 à 11:04:05 
 Signaler ce message aux modérateurs

Bonjour à vous,

je travaille actuellement sur un script unix, et j'aimerais récuperer le nième paramètre d'une fonction sachant que n est une variable de ma fonction. Comment faire ?

Merci

Configuration: Solaris 2.8

Meilleures réponses pour « nième paramètre d'un script » dans :
Bash - Les paramètres Voir Introduction Les paramètres positionnels Exemple 1 Les paramètres spéciaux Exemple 2 Initialiser des paramètres - La commande "set" - Exemples - La commande "shift" - Exemple 3 Introduction Il est possible de fournir à un script,...
Script au démarrage et à l'arrêt de Windows VoirL'astuce est valable pour Windows XP, Vista et 7 ; mais la méthode varie suivant l'édition de votre Windows (professionnelle ou familiale). Pour les éditions professionnelles ou intégrales Lancer l'éditeur de stratégie du groupe local : Menu...
[Windows] Changer l'adresse IP en ligne de commande avec Netsh VoirSous les systèmes Windows 2000/Windows XP et supérieurs, il est possible de modifier les paramètres TCP/IP à partir d'une simple ligne de commande, afin par exemple d'automatiser cette tâche grâce à un script. Ceci est possible grâce à l'outil...
Paramètres GPRS VoirSi vous possédez un téléphone mobile fonctionnant sous Windows Mobile (smartphone du type HTC, Qtek, etc.), voici les paramètres GPRS pour les trois principaux opérateurs français Orange Orange GSM Orange GPRS Orange MMS Orange...
PHP - Les variables d'environnement VoirNotion de variable d'environnement Les variables d'environnement sont, comme leur nom l'indique, des données stockées dans des variables permettant au programme d'avoir des informations sur son environnement. L'environnement, dans le cas du script...

1

kmf31, le 6 mai 2005 à 11:21:55

Dans la bash shell les parametres sont $0, $1, $2, ... et l'ensemble c'est: $@
Par contre ici le $n ne marche pas si n contient une valeur. Pour ca tu peux utiliser:

${@:$n:1}


De facon generale: ${VAR:a:n} prend les elements a, a+1, a+n-1, de VAR (si les elements sont separes par de blancs).
Regarde "man bash" !

Répondre à kmf31

2

FMA, le 6 mai 2005 à 11:41:16

Il me dit "substitution incorrecte", voilà mon code qui l'utilise si ca peut t'éclaircir...

callMenu()
{
integer n
echo "0. Tout arreter"
n=0
for i in $@
do
        n=$n+1
        echo "$n. $i"
done
echo "Votre choix? \c"
read c
echo "${@:$c:1}"

Répondre à FMA

3

kmf31, le 6 mai 2005 à 12:31:56

J'ai teste avec ce script:

n=3
echo start
echo ${@:$n:1}
echo stop


et ca marche si j'appelle le script: "<nom_script> 1 2 3 4 5 6 "

Ton truc marche aussi chez moi (si j'enleve la structure "callmenu" et la ligne "integer n" est rejete chez moi).

Je ne vois pas ou il y a le probleme, peut-etre il te faudra simplement utiliser le bash-shell de GNU et le sh de Sun est trop primitive pour ca.

Répondre à kmf31

4

FMA, le 6 mai 2005 à 13:08:57

Bon je suis simplement passer par un tableau pour stocker mes paramètres (faut dire que je suis pas complétement libre : c'est pour mon stage et faut que je fasse le script en ksh qu'on m'a dit )
en tout cas, merci encore de ton aide!

Répondre à FMA

5

kmf31, le 6 mai 2005 à 13:19:08

Quand je fais avec "ksh" (1ere ligne: "#!/usr/bin/ksh" dans le script) il me fait la meme erreur: bad substitution. Par contre avec
"#!/bin/sh" ca marche.
Donc c'est une difference entre ksh et sh ou bash. Il te faudra chercher la doc avec "man ksh" pour voir comment faire (si c'est absolument necessaire avec ksh).

Répondre à kmf31

6

 Jamirokoi from 13, le 28 jun 2007 à 15:49:18

Je sais que le message est vieux mais si quelqu'un tombe dessus comme moi, la solution pour ksh est de remplacer

echo ${@:$n:1}

par

echo `expr substr $@ $n 1`

ca devrait marcher !!!

A+

Jamirokoi

Répondre à Jamirokoi from 13