我正在尝试设置一个解析字符串的脚本。
我的循环目前是
while [ -n "$RAW" ]; do
// do some processing here
RAW=$(echo $RAW| sed -r 's/^.{15}//')
done
但是,脚本似乎永远不会结束
答案 0 :(得分:3)
它没有结束,因为sed
表达式不正确。它预计最少15个字符,不适用于少于15个字符的任何字符。试试这个:
RAW=$(echo $RAW| sed -r 's/^.{0,15}//')
答案 1 :(得分:2)
也许你只想要这个:
#!/bin/bash
RAW=012345678901234567890
.
.
.
RAW=${RAW:15}
echo $RAW
567890
答案 2 :(得分:0)
由于你的while循环中的逻辑,它可能不会结束。
您正在覆盖变量RAW
:
RAW=$(echo $RAW| sed -r 's/^.{15}//')
这意味着匹配并用空字符串替换原始变量中的前15个字符。什么只剩下10个字符。因为sed将不匹配(和替换),并且您的varialbe RAW
将保持该值。
您可能希望替换最多15个字符,如果是这样的话,那就是您需要的:
RAW=$(echo $RAW | sed -r 's/^.{1,15}//')