recoder un script bash en ash

recoder un script bash en ash - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 29-11-2005 à 09:26:16    

Bonjour,  
 
J'ai un script en bash que j'affectionne tout particulierement, j'aimerais le lancer sur une machine ou il n'y a que ash (impossible d'installer bash par manque de place), tout mon script fonctionne sauf l'operateur de test == , qui apperemment n'est aps reconnu en ash.  
 
Y'a t il un operateur de test equivalent a ==  en ash ?  
 
Je suis preneur de toute solutions.  
 
 
Merci d'avance

Reply

Marsh Posté le 29-11-2005 à 09:26:16   

Reply

Marsh Posté le 29-11-2005 à 09:33:24    

a = b peut etre...
 
si je me souviens bien == est un basherie :)

Message cité 1 fois
Message édité par Profil supprimé le 29-11-2005 à 09:33:47
Reply

Marsh Posté le 29-11-2005 à 10:10:02    


 
moi pas etre expert bash mais iirc :  
 
a == b en bash retourne un booleen "TRUE" si a est identique b. Alors que a =b renvois "true" si on a reussi a affecter b a la variable  a.  
 
je suis encore moins expert en ash, mais a = b en ash ce serait  pas juste le deuxieme test ? ( test d'affectation ? ) et non le premier.  
 
Je vias voir si mon script marche tout de meme en changeant == en  =. je verrais ca ce soir.  
 
 

Reply

Marsh Posté le 29-11-2005 à 10:20:05    

heu non. dans une commande test (if test truc=bidule ou if [ truc=bidule]) le = est bien un test. == est une extension bash en effet mais le = est POSIX compliant...

Reply

Marsh Posté le 29-11-2005 à 10:26:15    

le lien n'a rien a voir, mais c'est ic que j'avait vu ca...
http://initng.thinktux.net/index.p [...] o_remember
 
Attention : A=$B != $A = $B


Message édité par Profil supprimé le 29-11-2005 à 10:26:55
Reply

Marsh Posté le 30-11-2005 à 04:20:06    

En POSIX c'est "=", pas "==".

Reply

Marsh Posté le 30-11-2005 à 22:01:57    

Ouaip ils sont tous compatible avec l'antique sh  
donc = plutôt que le == du csh
ca donne par ex
 [ -z "$wanproto" -o "$wanproto" = "none" ] || wanif=$(nvram get wan_ifname)
extrait du script (ash) S50dnsmasq sur OpenWRT  
 
 
 

Reply

Marsh Posté le 02-12-2005 à 19:04:35    

if ( a==b) devient if [ a -eq b ] tout simplement

Reply

Marsh Posté le 02-12-2005 à 20:47:45    

-eq c'est different : c'est une comparaison numerique, alors que == et = sont des comparaisons de chaine. Et puis ni ==, ni =, ni -eq ne peuvent etre utilises entre parentheses comme tu le dis. Et enfin c'est $a et $b, pas a et b.

Reply

Marsh Posté le 05-12-2005 à 00:46:53    

en effet dans le script qui m'interesse, le == est utilise pour comparer des chaines de caracteres ( en bash), et je cherche la commande equivalent en sh.  
 

Reply

Marsh Posté le 05-12-2005 à 00:46:53   

Reply

Marsh Posté le 05-12-2005 à 12:29:12    

C'est =, comme on l'a déjà dit.

Reply

Marsh Posté le 05-12-2005 à 12:39:43    

non mais sinon man ash, man bash, etc.

Reply

Marsh Posté le 05-12-2005 à 14:34:29    

minusplus a écrit :

non mais sinon man ash, man bash, etc.


 
helas je peut pas installer bash sur la machine en question par manque de place. donc j'ai pas les manpages non plus. je les ai lu sur le net. Merci de votre aide en tout cas.  

Reply

Sujets relatifs:

Leave a Replay

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