【问题标题】:Manipulate string in shell script在 shell 脚本中操作字符串
【发布时间】:2011-04-17 06:56:32
【问题描述】:

出于某种目的,我正在编写一个 shell 脚本。我有一个形式的变量--

var1 = "policy=set policy"

现在我需要操作变量 var 以获取索引 = 之后的字符串。那就是我应该有“设定政策”。对于“=”的值不是恒定的许多其他变量,我也需要这样做。喜欢

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

你能告诉我怎么做吗?

【问题讨论】:

  • 请接受更多答案。另外,请注意,在大多数 shell 中,赋值运算符前后不能有空格。
  • “过于本地化”的亲密选民需要跳出自己的外壳,进入现实世界。这是一个关于 shell 编程的问题,完全是关于 SO 的主题。
  • 您在编写哪个 shell?

标签: shell unix scripting string


【解决方案1】:
${var#*=}

从左边删除最短匹配的*=。请注意,这是不合适的:如果要保存结果,则必须将结果存储在变量中。

顺便说一句,这是针对 bash 的。 AFAIK 它也适用于 ksh 和 zsh,但不适用于 csh 或 tcsh。

【讨论】:

  • 这是有效的 POSIX shell 代码。 (*csh 不是 POSIX shell 实现。)
【解决方案2】:

其他不依赖于你所拥有的外壳的方式。

$ 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

【讨论】:

    猜你喜欢
    • 2011-06-18
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多