2012-01-13 4 views
1

私はashシェル(bashではなく)を使用して小さなスクリプトを開発しています。シェルスクリプト:変数からテキストの一部分を読み取る方法

今は以下の組成を有する可変有する:数は任意の数(実際には1と18との間が、将来的にその数はより高いかもしれない)文字列が名前およびステータスであるかもしれない

VARIABLE = "number string status" 

をまたはオンまたはオフ 名前は通常小文字のみです。

私の問題は、数値とステータスを削除して、変数の文字列の内容のみを読み取ることです。

どうすれば入手できますか?

答えて

4

2つの方法;一つは$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

$(...)は灰には分かっていません。代わりにバッククォートを使用する必要があります。 –

+0

本当に@ChrisJですか?私は[wikipedia](http://ja.wikipedia.org/wiki/Comparison_of_computer_shells#Interprocess_communication)をチェックし、 '灰 'が'コマンド置換'をサポートしていると述べています。 –

+0

Chris、それは$()と$ ".."の両方で動作します – Ivan

1

方法について:

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

echo ${15} # outputs word 15 
関連する問題