bash虽然字符串不为空

时间:2014-02-03 13:19:54

标签: linux string bash

我正在尝试设置一个解析字符串的脚本。

我的循环目前是

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

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

3 个答案:

答案 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}//')