Estoy tratando de configurar un script que analice una cadena.
Mi ciclo es actualmente
while [ -n "$RAW" ]; do // do some processing here RAW=$(echo $RAW| sed -r 's/^.{15}//') doneSin embargo, el guión nunca parece terminar.
No termina porque la expresión sed no es correcta. Espera un mínimo de 15 caracteres y no funciona con menos de 15 caracteres. Prueba esto:
RAW=$(echo $RAW| sed -r 's/^.{0,15}//')Tal vez solo quieras esto:
#!/bin/bash RAW=012345678901234567890 . . . RAW=${RAW:15} echo $RAW 567890Es posible que no termine debido a la lógica dentro de su bucle while.
Estás haciendo para sobrescribir la variable RAW :
RAW=$(echo $RAW| sed -r 's/^.{15}//') Lo que significa hacer coincidir y reemplazar los primeros 15 caracteres en la variable original por una cadena vacía. Que hay solo quedan 10 caracteres. En ese sed no coincidirá (y reemplazará) y su varialbe RAW permanecerá en ese valor.
Probablemente desee reemplazar hasta 15 caracteres desde el principio y, si ese es el caso, esto es lo que necesitará:
RAW=$(echo $RAW | sed -r 's/^.{1,15}//')