在shell脚本中操作字符串
出于某种目的,我正在编写一个shell脚本。我有一个形式的变量-- 现在,我需要操作变量var以获取索引在shell脚本中操作字符串,shell,unix,scripting,string,Shell,Unix,Scripting,String,出于某种目的,我正在编写一个shell脚本。我有一个形式的变量-- 现在,我需要操作变量var以获取索引=后的字符串。也就是说,我应该“制定政策”。对于许多其他变量,“=”的值不是常数,我也需要对此进行分析。像 var2 = "bgroup = set bgroup port" var3 = "utm = set security utm" 你能告诉我怎么做吗 ${var#*=} 从左侧删除最短匹配的*=。请注意,这是不适当的:如果要保存结果,必须将结果存储在变量中 另一方面,这是为bas
=
后的字符串。也就是说,我应该“制定政策”。对于许多其他变量,“=”的值不是常数,我也需要对此进行分析。像
var2 = "bgroup = set bgroup port"
var3 = "utm = set security utm"
你能告诉我怎么做吗
${var#*=}
从左侧删除最短匹配的*=
。请注意,这是不适当的:如果要保存结果,必须将结果存储在变量中
另一方面,这是为bash准备的。AFAIK它也适用于ksh和zsh,但不适用于csh或tcsh
从左侧删除最短匹配的*=
。请注意,这是不适当的:如果要保存结果,必须将结果存储在变量中
另一方面,这是为bash准备的。当然,它也适用于ksh和zsh,但不适用于csh或tcsh。其他不依赖于您拥有的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
其他不依赖于外壳的方式
$ 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中,赋值运算符前后不能有空格。“过于本地化”的密切投票者需要离开自己的shell,进入真实世界。这是一个关于shell编程的问题,完全是关于SO的主题。您编写的是哪个shell?请接受更多答案。另外,请注意,在大多数shell中,赋值运算符前后不能有空格。“过于本地化”的密切投票者需要离开自己的shell,进入真实世界。这是一个关于shell编程的问题,完全是关于SO的主题。您编写的是哪个shell?这是有效的POSIX shell代码。(*csh不是POSIX shell实现。)这是有效的POSIX shell代码。(*csh不是POSIX shell实现。)