2011-04-27 77 views
2

我已經編寫了一個shell腳本來完成一些處理並且必須處理一個變量。基本上,變量是這樣的 -需要操作字符串變量的幫助

vaa="set policy:set cli" 

我的目的是根據「:」的位置將它分成兩個變量。爲了得到最終結果,我正在這樣做 -

vaa1=${vaa#*:} 
echo ${vaa1} //this prints "set cli" which I want 

但是,我無法獲得字符串「set policy」的左邊部分。我試着這樣做 -

vaa2=${vaa%*:} 

但它沒有工作,我得到整個字符串 - 「設置策略:設置cli」。有關如何獲得左側部分的任何想法?

回答

1

你需要改變你的模式

echo ${vaa#*:} 
# from the beginning of the string, 
# delete anything up to and including the first : 

echo ${vaa%:*} 
# from the end of the string, 
# delete the last : and anything after it 
1

試試這個

vaa2=${vaa%:*} 
echo ${vaa2} 
+0

在Bourne類型的炮彈中,「=」周圍不能有空格 – 2011-04-27 13:27:04

+0

謝謝,現在應該修復。 – 2011-04-27 13:30:16

1

這是如何做到這一點(bash)的

$ vaa="set policy:set cli" 
$ IFS=":" 
$ set -- $vaa 
$ echo $1 
set policy 
$ echo $2 
set cli 

或讀入一個數組

$ IFS=":" 
$ read -a array <<< "$vaa" 
$ echo "${array[0]}" 
set policy 
$ echo "${array[1]}" 
set cli