[shell] Entrer une variable

Entrer une variable [shell] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 02-03-2004 à 23:19:14    

Hello,
 
Voila, j'aimerais avoir un truc de ce style dans mon script sh :
 
./script.sh
L'user est ? (usr a rentrer ici)
et apres ca l'envoie a :
adduser $user
 
c'est u e xemple, je men servirais aussi pour dautres scripts..
 
quelqu'un sait il comment faire ?

Reply

Marsh Posté le 02-03-2004 à 23:19:14   

Reply

Marsh Posté le 02-03-2004 à 23:22:40    

petit exemple:
 
echo "entre ton nom, mon petit:"
read nom
echo $nom

Reply

Marsh Posté le 02-03-2004 à 23:24:01    

thx

Reply

Marsh Posté le 02-03-2004 à 23:32:33    

et pour faire une verification c bien ca : ?
if ($nom == 'cstrike' or $nom == 'valve')
{
code
}
else
{
}
 
?

Reply

Marsh Posté le 02-03-2004 à 23:37:11    

if [ $nom == 'cstrike' ]
then
echo gagneeeee
else
echo  perduuu
fi
 
c mieu lol ^^

Reply

Marsh Posté le 04-03-2004 à 18:58:05    

comment pourrais récupéré une variable de ce style :
./truc.sh -bidule=1 ?
 
++

Reply

Marsh Posté le 22-02-2005 à 02:55:24    

up

Reply

Marsh Posté le 22-02-2005 à 14:42:39    

Bonjour,
 
si tu veux récupérer -bidule=1 c'est avec les $1 $2...
il y a aussi shift qui est pas mal utile enfin va voir ce lien pour un vrai tuto:
http://www.math.uni-bremen.de/techdoc/software1/bash/

Reply

Marsh Posté le 23-02-2005 à 13:25:43    

0liv a écrit :

Bonjour,
 
si tu veux récupérer -bidule=1 c'est avec les $1 $2...
il y a aussi shift qui est pas mal utile enfin va voir ce lien pour un vrai tuto:
http://www.math.uni-bremen.de/techdoc/software1/bash/


 
Ou bien va voir ce lien pour un vrai cours sur le shell en français http://fr.lang.free.fr/cours/Shell_v1.2.doc

Reply

Marsh Posté le 23-02-2005 à 14:09:51    

pendant que j'y pense il y a aussi les commandes getopt et getopts qui sont pas mal utiles pour "parser" une ligne d'option ;)

Reply

Marsh Posté le 23-02-2005 à 14:09:51   

Reply

Marsh Posté le 23-02-2005 à 14:32:38    

0liv a écrit :

pendant que j'y pense il y a aussi les commandes getopt et getopts qui sont pas mal utiles pour "parser" une ligne d'option ;)


 
D'ailleurs, une question corrolaire :
à quoi sert shift sans getopt?

Reply

Marsh Posté le 23-02-2005 à 15:02:34    

xouille38 a écrit :

D'ailleurs, une question corrolaire :
à quoi sert shift sans getopt?


à faire ce genre de chose :

Code :
  1. ...
  2. while [ "x$1" != "x"  ]
  3. do
  4.   case "$1" in
  5.       "--input" | "-i" )
  6.           shift
  7.           INPUT=$1
  8.           shift
  9.           ;;
  10.       "--output" | "-o" )
  11.           shift
  12.           OUTPUT=$1
  13.           shift
  14.           ;;
  15.       "--help" | "-h" | * )
  16.           echo "$(basename $0) : Convert Avi file into Matroska"
  17.           echo "  Usage : $(basename $0) [options]"
  18.           echo "    Options :"
  19.           echo "      -i f  | --input f         : f is the input file [MANDATORY]"
  20.           echo "      -o f  | --output f        : f is the output file"
  21.           echo "      -h    | --help            : what you're reading right now !"
  22.           exit
  23.           ;;
  24.   esac
  25. done
  26. ...


---------------
Chết rồi ! ✍ ⌥⌘ http://github.com/gwenhael-le-moine/slackbuilds/
Reply

Marsh Posté le 23-02-2005 à 15:05:10    

on peut difficilement utiliser getopt sans shift...
mais si tu fais un script bash tout bête style: ./foo arg1 arg2 arg3... argn
tu n'auras pas besoin de getopt car tu désigneras argi avec $i par contre tu pourras avoir besoin de shift pour passer simplement de $i à $(i+k)

Reply

Marsh Posté le 23-02-2005 à 15:24:32    

xouille38 a écrit :

D'ailleurs, une question corrolaire :
à quoi sert shift sans getopt?


 
Une fois, j'ai eu à traiter mes arguments deux par deux.
J'ai donc écrit une simple boucle "while test $# -gt 1" puis j'ai fait un "shift 2 " en fin de boucle.
Exemple concret d'un shift sans getopt...


Message édité par Sve@r le 23-02-2005 à 15:25:21
Reply

Marsh Posté le 23-02-2005 à 17:43:38    

cycojesus a écrit :

à faire ce genre de chose :

Code :
  1. ...
  2. while [ "x$1" != "x"  ]
  3. do
  4.   case "$1" in
  5.       "--input" | "-i" )
  6.           shift
  7.           INPUT=$1
  8.           shift
  9.           ;;
  10.       "--output" | "-o" )
  11.           shift
  12.           OUTPUT=$1
  13.           shift
  14.           ;;
  15.       "--help" | "-h" | * )
  16.           echo "$(basename $0) : Convert Avi file into Matroska"
  17.           echo "  Usage : $(basename $0) [options]"
  18.           echo "    Options :"
  19.           echo "      -i f  | --input f         : f is the input file [MANDATORY]"
  20.           echo "      -o f  | --output f        : f is the output file"
  21.           echo "      -h    | --help            : what you're reading right now !"
  22.           exit
  23.           ;;
  24.   esac
  25. done
  26. ...



 
vi mais ça j'aurais mis un getopt... :D  
 

Reply

Marsh Posté le 23-02-2005 à 17:47:25    

Non mais en fait elle est con ma question... Rien que dans le cas d'un script à nombre d'arguments variables ça aide bien!
marchi quand même!

Reply

Marsh Posté le 23-02-2005 à 18:30:18    

ah pis tiens, l'explication historique :
en Bourne shell on a pas droit à ${10} donc pas d'acces au dixième paramètre sans shift.

Reply

Marsh Posté le 24-02-2005 à 13:08:36    

xouille38 a écrit :

ah pis tiens, l'explication historique :
en Bourne shell on a pas droit à ${10} donc pas d'acces au dixième paramètre sans shift.


 
i=0
for arg in $*
do
     i=`expr $i + 1`
    test $i -eq 10 && echo $arg
done
 
Exemple concret d'accès au 10° paramètre sans shift (c'est tordu certes... mais les unixiens sont tous tordus ;-)


Message édité par Sve@r le 24-02-2005 à 13:09:28
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed