尝试将字符串的某些部分提取到变量中。初始的字符串看起来是这样的:/dev/sdc2: LABEL="PAKAGE" UUID="9501DCBF768CEBB9" TYPE="ntfs"
我得到正确PORT
和LABE
的L值,但不能得到休息:UUID
和TYPE
。而不是他们,我只是获得了一小部分。如何在bash脚本中拆分字符串
#!/bin/bash
INDEX1=""
INDEX2=""
LENGTH=""
PORT=""
LABEL=""
UUID=""
TYPE=""
line=`echo /dev/sdc2: LABEL="PAKAGE" UUID="9501DCBF768CEBB9" TYPE="ntfs" | sed s/\"//g`
echo $line
INDEX1=`expr index "$line" /dev/`
PORT=${line:$INDEX1-1:9}
INDEX1=`expr index "$line" LABEL=`
INDEX2=`expr index "$line" UUID`
INDEX1=`expr $INDEX1 + 5`
INDEX2=`expr $INDEX2 - 2`
LABEL=${line:$INDEX1:$INDEX2-$INDEX1}
INDEX1=`expr index "$line" UUID=`
INDEX2=`expr index "$line" TYPE`
INDEX1=`expr $INDEX1 + 4`
INDEX2=`expr $INDEX2 - 2`
UUID=${line:$INDEX1:$INDEX2-$INDEX1}
INDEX1=`expr index "$line" TYPE=`
INDEX1=`expr $INDEX1 + 4`
TYPE=${line:$INDEX1}
echo $PORT
echo $LABEL
echo $UUID
echo $TYPE
Here the output of this script:
/dev/sdc2: LABEL=PAKAGE UUID=9501DCBF768CEBB9 TYPE=ntfs
/dev/sdc2
PAKAGE
GE UUID=9501DCBF768CEBB9 T
KAGE UUID=9501DCBF768CEBB9 TYPE=ntfs
我在哪里错了?
这将是更好/更安全,不会在bash做到这一点在所有:Python的' shlex'模块(在标准库中)对于shell语法来说是一个比任何bash内置的任何东西都更好的词法分析器。否则,你最终会遇到危险的方法(如'eval')或脆弱的方法(如试图推出自己的解析器)。 –
我不知道蟒蛇不幸的是(和正则表达式) – Chord