2012-01-13 184 views
1

我正在開發一個使用ash shell(而不是bash)的小腳本。shell腳本:如何從變量中只讀取部分文本

現在我有具有以下組成的變量:

VARIABLE = "number string status" 

其中數可以是任意數目(實際上是1和18之間,但在未來的數字可能更高)的字符串是一個名稱和狀態是或打開或關閉 名稱通常只是小寫字母。

現在我的問題是隻讀取變量中的字符串內容,刪除數字和狀態。

我該如何獲得?

回答

4

兩種方式;一個是利用$IFS和使用while循環 - 這會爲單行工作很愉快 - 如:

echo "Part1 Part2 Part3" | while read a b c 
do 
    echo $a 
done 

或者,使用cut如下:

a=`echo $var | cut -d' ' -f2` 
echo $a 
3

如何使用cut

name=$(echo "$variable" | cut -d " " -f 2) 

UPDATE

顯然,灰不明白$(...)。希望你可以這樣做:

name=`echo "$variable" | cut -d " " -f 2` 
+0

$(...)不知道灰。他們需要使用反引號。 – 2012-01-13 23:19:08

+0

你確定@ChrisJ?我檢查了[wikipedia](http://en.wikipedia.org/wiki/Comparison_of_computer_shells#Inter-process_communication),它確實聲明'ash'支持'命令替換'。 – 2012-01-14 02:20:25

+0

克里斯,與$()和$「..」 – Ivan 2012-01-14 10:29:13

1

如何:

name=$(echo "$variable" | awk '{print $2}') 
1
#!/bin/sh 
myvar="word1 word2 word3 wordX" 
set -- $myvar 

echo ${15} # outputs word 15