2011-04-17 103 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