bash tandis que la chaîne n'est pas vide
Je suis en train de configurer un script qui analyse une chaîne de caractères.
Ma boucle est actuellement
while [ -n "$RAW" ]; do
// do some processing here
RAW=$(echo $RAW| sed -r 's/^.{15}//')
done
Cependant, le script ne semble jamais de fin
Vous devez vous connecter pour publier un commentaire.
Il n'est pas de fin parce que le
sed
expression n'est pas correcte. Il s'attend à un minimum de 15 caractères et ne fonctionne pas pour rien de moins que 15 caractères. Essayez ceci://
à#
. Deuxièmement, le sed de commande ne fonctionne pas correctement, de sorte que RAW n'est jamais changé, c'est pourquoi il va de boucle infiniePeut-être vous voulez juste ceci:
Il ne pourrait pas prendre fin à cause de la logique à l'intérieur de votre boucle while.
Vous êtes en train de faire pour remplacer la variable
RAW
:Qui signifie match et remplacer les 15 premiers caractères dans la variable d'origine par une chaîne vide. Qu'est-ce que il y a seulement 10 caractères à gauche. Dans ce sed ne correspond pas (et remplacer) et votre varialbe
RAW
restera à cette valeur.Vous voulez probablement jusqu'à 15 caractères du début être remplacé et si c'est le cas, c'est ce que vous aurez besoin de: