嘗試將字符串的某些部分提取到變量中。初始的字符串看起來是這樣的:/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