2011-04-17 105 views
0

我正在爲某個目的編寫一個shell腳本。我有以下形式的變量 -在shell腳本中操縱字符串

var1 = "policy=set policy" 

現在我需要操縱變量var指數=後得到的字符串。那就是我應該有「制定政策」。此外,我需要對其中許多其他變量的值「=」不是常量。像

var2 = "bgroup = set bgroup port" 
var3 = "utm = set security utm" 

你能告訴我一個想法該怎麼做嗎?

+3

請接受更多的答案。另外,請注意,在大多數shell中,在賦值運算符之前或之後不能有空格。 – 2011-04-17 06:57:37

+1

「過於本土化」的選民需要走出自己的外殼,進入現實世界。這是一個關於shell編程的問題,完全是關於SO的話題。 – 2011-04-17 07:03:56

+0

你在編寫哪個shell? – Johnsyweb 2011-04-17 07:21:12

回答

3
${var#*=} 

從左側移除*=的最短匹配項。請注意,這不適用:如果您想保存結果,則必須將結果存儲在變量中。

在一個側面說明,這是爲bash。 AFAIK它也適用於ksh和zsh,但不適用於csh或tcsh。

+0

這是有效的POSIX shell代碼。 (* csh不是POSIX shell實現。) – 2011-04-17 15:15:24

0

其他方法不依賴於你有什麼shell。

$ var1="policy=set policy" 
$ echo $var1 | awk '{sub(/.[^=]*=/,"")}1' 
set policy 
$ echo $var1 | cut -d= -f2- 
set policy 
$ echo $var1 | ruby -e 'puts gets.split(/=/,2)[1]' 
set policy 
$ echo $var1 | sed 's/.[^=]*=//' 
set policy