Comment extraire une partie d'une variable dans une autre variable dans le script shell
J'ai une variable qui ressemble à xx-xx-xx-xx où chaque xx est un nombre (la longueur de chaque xx est inconnue)
J'ai besoin d'extraire les numéros de variables distinctes pour être en mesure de les manipuler.
J'ai essayé de regarder les expressions régulières, mais ne pourrais pas voir toute la solution (ou je suis juste aveugle pour ne pas remarquer.
Idéalement solution devrait ressembler à
#!/bin/sh
# assume VARIABLE equals 1234-123-456-890
VARIABLE=$1
# HERE SOME CODE assigning variables $PART1 $PART2 $PART3 $PART4
echo $PART1-$PART2-$PART3-$PART4
# Output will give us back 1234-123-456-890
Je suis tout à fait nouveau pour la création de scripts shell, donc j'ai peut-être raté quelque chose.
OriginalL'auteur Alexey Kamenskiy | 2012-03-28
Vous devez vous connecter pour publier un commentaire.
À l'aide de
bash
vous pouvez utiliser un tableau comme ceci:La
${VARIABLE//-/}
expansion des changements de tous les espaces et alors qu'il est divisé sur les limites de word dans un tableau.Sinon, vous pouvez utiliser
read
:Pour le faire fonctionner dans
sh
, vous pouvez le changer légèrement et définirIFS
, l'entrée séparateur de champ:Mise en garde: ce ne fut testé avec
bash
cours d'exécution danssh
mode.read
.Si vous utilisez
IFS=- read a b c d <<< "$VARIABLE"
, alors vous n'avez pas besoin d'utiliser le "old_ifs" variable temp parce que "IFS" ne seront modifiées pour la durée de la commande de lecture.Neat! Ne connaissais pas celui-là mais ça va dans mon sac à malices. Merci.
OriginalL'auteur FatalError
/bin/sh
est dash (voir la section "Paramètre d'Extension")Test pour
$PART1-$PART2-$PART3-$PART4
OriginalL'auteur Rony
OriginalL'auteur peon
Cela pourrait fonctionner pour vous:
OriginalL'auteur potong
plus sur la coupe
OriginalL'auteur Balaswamy Vaddeman