我试图设置一个脚本来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}//')