在常量字符串上应用bash字符串运算符
发布时间:2020-12-15 21:51:12 所属栏目:安全 来源:网络整理
导读:我正在尝试在常量字符串上使用bash字符串运算符.例如,您可以对变量$foo执行以下操作: $foo=a:b:c; echo ${foo##*:}c 现在,如果“a:b:c”字符串是常量,我想有一个更简洁的解决方案,如: echo ${"a:b:c"##*:} 但是,这不是有效的bash语法.有没有办法执行此操
我正在尝试在常量字符串上使用bash字符串运算符.例如,您可以对变量$foo执行以下操作:
$foo=a:b:c; echo ${foo##*:} c 现在,如果“a:b:c”字符串是常量,我想有一个更简洁的解决方案,如: echo ${"a:b:c"##*:} 但是,这不是有效的bash语法.有没有办法执行此操作? [我需要这样做的原因(而不是硬编码替换的结果,即“c”这里)是因为我有一个命令模板,其中“%h”占位符在运行命令之前被某些东西替换;取代的结果被bash视为常数.] 解决方法
使用参数扩展是不可能的.
您可以使用其他命令,如sed / awk / expr. 但我没有看到这个要求. tmp=%h echo ${tmp##*:} 或者如果速度不是问题,并且您不希望使用不需要的变量使当前环境混乱: (tmp=%h; echo ${tmp##*:}) 无论如何,你最好使用命令模板进行字符串操作或使用像cut这样简单的东西: # get third filed delimited by : $cut -d: -f3<<<'a:b:c' c 或者像awk或sed更复杂: #get last field separated by ':' $awk -F: '{print $NF}'<<<'a:b:c' c $sed 's/.*:([^:]*)/1/'<<<'a:b:c' c 取决于你需要什么. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |