gpt4 book ai didi

linux - bash 命令行参数到一个数组中,并根据参数值对数组进行子集化

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:39:32 24 4
gpt4 key购买 nike

我正在尝试为我的 bash 脚本获取输入参数。testbash.sh 4 1 2 4 5 科学 p *我想将这些参数作为一个数组获取,我使用 $@ 将其全部获取到一个数组中。现在基于第一个参数,我需要对其余参数进行子集化。这里第一个数字是 4,所以从第二个参数到第五个参数应该保存为一个数组,如 [1 2 4 5],其余参数保存在另一个数组中。

我试过了

数组=( $@ )
len=${#array[@]}
args=${数组[@]:0:$len-${数组[1]}}
回显 $args

我试过这个来获得第一部分,但是当我运行这个“testbash.sh 4 1 2 4 5 Science a p *”时,我在表达式中遇到错误语法错误(错误标记是“:-4”)

最佳答案

这是一种方法:

FIRST_SET=("${@:2:$1}")
REST=("${@:$(($1+2))}")

这直接从参数开始工作,而不是使用中间数组。以大致相同的方式使用中间数组会很容易,但请记住数组索引从 0 开始,而参数索引有效地从 1 开始(因为参数 0 是命令名称)。

请注意,引号很重要:没有它们,命令行参数将通过 glob 扩展和分词传递额外的时间;实际上,您失去了引用命令行参数的能力。

关于linux - bash 命令行参数到一个数组中,并根据参数值对数组进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17219453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com