recoder un script bash en ash - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 29-11-2005 à 09:33:24
a = b peut etre...
si je me souviens bien == est un basherie
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.
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...
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
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
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.
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.
Marsh Posté le 05-12-2005 à 12:39:43
ReplyMarsh 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.
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