gpt4 book ai didi

linux - 如何将前几个命令行参数存储到数组中

转载 作者:可可西里 更新时间:2023-11-01 11:45:07 25 4
gpt4 key购买 nike

我有一个 shell 脚本,它从命令行获取输入参数。以下只有两个选项:

./test.sh 20180415 20180416 20180417 20180418 2
./test.sh 20180418 2

第一个选项需要 5 个输入参数,其中前四个是日期格式“YYYYMMDD”,我想将这些日期存储在数组变量中:sets_date=("$@") 和最后一个参数是 2 我将把它存储在不同的变量中。

第二个选项采用 2 个输入参数,其中第一个采用相同的日期格式,我仍然想将该日期存储在数组变量中,最后一个参数存储在不同的变量中。这是我仅有的两个选择。

#!/bin/bash

sets_date=("$@")
# store number in variable

这可以在 shell 脚本中完成吗?所以我的 shell 脚本要么接受 5 个输入参数,要么只接受 2 个输入参数,并且不会有任何其他组合。

最佳答案

你可以使用数组扩展技术来做到这一点。首先,您只需要存储第一个元素和最后一个元素。第一种技术的语法很简单,${@:startpos:endpos}。我们将起始位置设置为 1,因为 0 代表正在使用的实际脚本的名称。结束位置是通过从 $# 中减去一个来得出的,它表示传递的总位置参数的计数。

exceptLastElem=( "${@:1:$#-1}" )

最后一个元素

lastElement="${@:$#}"

把它放在一个虚拟函数上

ap() { echo "except last ${@:1:$#-1}" ; echo "last ${@:$#}" ; }

现在调用带有多个参数的函数

ap 1 2 3 4
except last 1 2 3
last 4

关于linux - 如何将前几个命令行参数存储到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49964158/

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