我正在为某个目的编写一个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