bash,而string不是空的

我试图设置一个脚本来parsing一个string

我的循环是目前

while [ -n "$RAW" ]; do // do some processing here RAW=$(echo $RAW| sed -r 's/^.{15}//') done 

但是,脚本似乎永远不会结束

由于sed表达不正确,所以没有结束。 它预计最少15个字符,不能用于少于15个字符的任何内容。 尝试这个:

 RAW=$(echo $RAW| sed -r 's/^.{0,15}//') 

也许你只是想要这个:

 #!/bin/bash RAW=012345678901234567890 . . . RAW=${RAW:15} echo $RAW 567890 

它可能不会因为while循环中的逻辑而结束。

你正在做覆盖变量RAW

 RAW=$(echo $RAW| sed -r 's/^.{15}//') 

这意味着用空字符串匹配和替换原始变量的前15个字符。 什么是只剩下10个字符。 在那个sed将不匹配(和替换),你的varialbe RAW将保持在该值。

你可能需要从开始的15个字符被替换,如果是这种情况,这是你将需要:

 RAW=$(echo $RAW | sed -r 's/^.{1,15}//')