我正在爲某個目的編寫一個shell腳本。我有以下形式的變量 -在shell腳本中操縱字符串
var1 = "policy=set policy"
現在我需要操縱變量var指數=
後得到的字符串。那就是我應該有「制定政策」。此外,我需要對其中許多其他變量的值「=」不是常量。像
var2 = "bgroup = set bgroup port"
var3 = "utm = set security utm"
你能告訴我一個想法該怎麼做嗎?
我正在爲某個目的編寫一個shell腳本。我有以下形式的變量 -在shell腳本中操縱字符串
var1 = "policy=set policy"
現在我需要操縱變量var指數=
後得到的字符串。那就是我應該有「制定政策」。此外,我需要對其中許多其他變量的值「=」不是常量。像
var2 = "bgroup = set bgroup port"
var3 = "utm = set security utm"
你能告訴我一個想法該怎麼做嗎?
${var#*=}
從左側移除*=
的最短匹配項。請注意,這不適用:如果您想保存結果,則必須將結果存儲在變量中。
在一個側面說明,這是爲bash。 AFAIK它也適用於ksh和zsh,但不適用於csh或tcsh。
這是有效的POSIX shell代碼。 (* csh不是POSIX shell實現。) – 2011-04-17 15:15:24
其他方法不依賴於你有什麼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
請接受更多的答案。另外,請注意,在大多數shell中,在賦值運算符之前或之後不能有空格。 – 2011-04-17 06:57:37
「過於本土化」的選民需要走出自己的外殼,進入現實世界。這是一個關於shell編程的問題,完全是關於SO的話題。 – 2011-04-17 07:03:56
你在編寫哪個shell? – Johnsyweb 2011-04-17 07:21:12