[Bash] mise a jour d'une variable (string) [FOU]

mise a jour d'une variable (string) [FOU] [Bash] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 26-03-2009 à 20:54:22    

Je viens humblement demander de l'aide  :o parce que je ne trouve pas les reponses ailleurs !
 
Je fais un script bash tout con :
 

Code :
  1. export nameExec=" "
  2. if [ "$1" == "" ]; then
  3.    echo "No run_bench name, quitting"
  4.    exit
  5. elif [ "$1" == "1" ]; then
  6.    ${nameExec:+"run_bench.sh"}
  7.    echo "Running one time ($nameExec)"
  8. else
  9.    ${nameExec:+"run_bench_10.sh"}
  10.    echo "Running ten time"
  11. fi
  12. for ((i=200;i<=217;i+=1)); do
  13.    ssh  vlsi$i.vlsi.polymtl.ca 'screen -d -m ~/exec_routing_once.sh --update $nameExec'&
  14.    sleep 1
  15. done


 
Et la sortie :

./launch_routing_grm.sh 1
Launching all vlsi computers for wfsoftware with updates of svn
./launch_routing_grm.sh: line 13: run_bench.sh: command not found
Running one time ( )
nameExec: Undefined variable.


 
 
Maais : comment on fait pour mettre a jour une variable string ??
J'ai essaye wattmille trucs, meme les plus simples... ca doit pas etre complique ??
 
je vous remercie !


---------------
Un blog qu'il est bien
Reply

Marsh Posté le 26-03-2009 à 20:54:22   

Reply

Marsh Posté le 30-03-2009 à 09:02:38    

:heink: Je comprend ce que tu essaies de faire avec ${:+}. J'ai peut-être raté un truc, mais ce que tu veux c'est pas simplement une affectation ?

nameExec="run_bench.sh"

Reply

Marsh Posté le 02-04-2009 à 00:56:50    

En fait il utilise les "parameter expansions", dans ce cas precis cela veut dire attribuer "ce qu'il y a entre les quotes" si la variable existe. Sauf qu'il faut l'assigner à une variable : exemple :

Code :
  1. nameExec=foo
  2. nameExec=${nameExec:+"run_bench.sh"}
  3. echo $nameExec


( donne run_bench.sh )
 
Si tu veut juste dire "je donne une valeur si la variable est vide" tu peux faire  

Code :
  1. nameExec=
  2. echo ${nameExec:-"foo"}


Je t'encourage à lire la doc : http://mywiki.wooledge.org/BashFAQ/073
et aussi man bash, section "parameter expansion"
 
Bon, allez, je te corrige ton script tel que je l'ai compris :

Code :
  1. nameExec=
  2. if [ ! "$1" ]; then
  3.    echo "No run_bench name, quitting"
  4.    exit
  5. elif [ "$1" == "1" ]; then
  6.    nameExec=run_bench.sh
  7.    echo "Running one time ($nameExec)"
  8. else
  9.    nameExec=run_bench_10.sh
  10.    echo "Running ten time"
  11. fi
  12. for ((i=200;i<=217;i+=1)); do
  13.    ssh  vlsi${i}.vlsi.polymtl.ca "screen -d -m ~/exec_routing_once.sh --update $nameExec"&
  14.    sleep 1
  15. done


Reply

Sujets relatifs:

Leave a Replay

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