加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

删除bash变量中的最后一个单词

发布时间:2020-12-15 22:19:29 所属栏目:安全 来源:网络整理
导读:我有类似的东西: ...args=$*echo $args... 结果是 unusable1 unusable2 useful useful ... useful unusable3 我需要删除所有“无法使用”的args.他们总是在第一,第二和最后的位置. 经过一番调查后,我找到了${*:3} bash语法.它有助于删除前两个. ...args=${
我有类似的东西:

...
args=$*
echo $args
...

结果是

unusable1 unusable2 useful useful ... useful unusable3

我需要删除所有“无法使用”的args.他们总是在第一,第二和最后的位置.
经过一番调查后,我找到了${*:3} bash语法.它有助于删除前两个.

...
args=${*:3}
echo $args
...

结果是

useful useful ... useful unusable3

但我找不到如何使用相同的语法删除最后一个单词.

解决方法

args = ${*:3}展平您的参数列表.你不想那样做.请考虑遵循下面给出的模式:

# this next line sets "$@" for testing purposes; you don't need it in real life
set -- 
  "first argument" 
  "second argument" 
  "third argument" 
  "fourth argument" 
  "fifth argument"

# trim the first two
args=( "${@:2}" )

# trim the last one
args=( "${args[@]:1:$(( ${#args[@]} - 2 ))}" )

# demonstrate the output content
printf '<%s>n' "${args[@]}"

运行以上输出产生以下输出:

<third argument>
<fourth argument>

……并且,通过这样做,证明它正确地将参数保持在一起,即使它们包含空格或通配符.

对于shell完成脚本,您可能还会考虑:

printf '%q ' "${args[@]}"

…引用内容的方式是由shell评估.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读