Supprimer la premiere lettre dune chaine en script shell sh
Bonjour,
Dans un script shell sh, je recupere de la ligre de commane une variable dont sa valeur contient en preniere lettre un $. Je voudrais supprimer ce $ tout en sachant que plus loing je peux avoir un autre $ que je dois conserver.
j'ai essyer avec la commande tr mais elle supprlime tous les $.
Merci mais j'ai un message d'erreur
Sur mon shell ca ne marche pas j'ai une erreur de type,
je suis sous netbsd.
Bad : modifier in $ (1).
Re: Merci mais j'ai un message d'erreur
Citation:
Envoyé par caesarvanou
Sur mon shell ca ne marche pas j'ai une erreur de type,
je suis sous netbsd.
Bad : modifier in $ (1).
Alors j'ai peur que tu n'aies un vieux sh qui ne supporte pas les nouvelles extensions de syntaxe que bash admet :?
Essaie ça :
Code:
1 2
| ma_var='$toto$titi'
ma_var=$(echo $ma_var | sed 's/^\$//') |
Et si ça ne marche pas avec les $( ),car c'est une syntaxe "moderne", essaye avec l'écriture "old-style" utilisant les back-ticks :
Code:
1 2
| ma_var='$toto$titi'
ma_var=`echo $ma_var | sed 's/^\$//' ` |
[RESOLU] Utilisation de commande sed
Merci 2Eurocents, avec un ma_var=$(echo $ma_var | sed 's/^\$//') ca marche. :D
Re: Merci mais j'ai un message d'erreur
Salut
Citation:
Envoyé par 2Eurocents
Alors j'ai peur que tu n'aies un vieux sh qui ne supporte pas les nouvelles extensions de syntaxe que bash admet :?
sh est un Bourne shell qui respecte ce standard... bash aporte tout un tas de trucs que seul lui connait, est compatible Bourne shell mais la compatibilité dans l'autre sens n'existe pas ... Donc niveau portabilité, zéro. bash est devenu le shell "standard sous linux", mais de nombreux unix et unix-like ne proposent de base que sh et csh (tcsh des fois aussi).
En bref, si un script doit être porté, utiliser la syntaxe sh... Sinon, bien mettre un shebang vers bash et non sh (pas mal de linux on sh qui est un lien vers bash) pour ne pas faire perdre de temps si on doit un jour le porter.