如何向Bash脚本传递2个固定参数及剩余n个可变参数并将其存入数组
Bash脚本:提取固定参数并将剩余参数存入数组
这事儿在Bash里其实挺简单的,用参数扩展语法就能轻松搞定。直接给你写好可用的脚本示例,再给你拆解关键部分:
#!/bin/bash # 先把前两个固定参数取出来 fixed_arg1="$1" fixed_arg2="$2" # 核心操作:把从第3个开始的所有参数存入数组 remaining_args=("${@:3}") # 下面是验证用的代码,你可以根据需求删掉 echo "第一个固定参数: $fixed_arg1" echo "第二个固定参数: $fixed_arg2" echo "剩余参数数组的元素个数: ${#remaining_args[@]}" echo "剩余参数明细:" for arg in "${remaining_args[@]}"; do echo " - $arg" done
关键语法解释
"${@:3}":这里的@代表脚本收到的所有位置参数,:3表示从第3个参数开始(也就是跳过前两个固定参数),一直取到最后一个参数。用双引号包裹是为了保留带空格的参数——比如如果某个剩余参数是"hello world",它会被当成数组的一个元素,而不是被拆成两个。${#remaining_args[@]}:用来获取数组的长度,也就是剩余参数的个数。
使用示例
比如你执行:
sh myScript.sh fixed1 fixed2 "arg with space" var1 var2 var3
脚本会输出:
第一个固定参数: fixed1 第二个固定参数: fixed2 剩余参数数组的元素个数: 4 剩余参数明细: - arg with space - var1 - var2 - var3
完全符合你说的需求,不管剩余参数是1个还是15个,这个写法都能完美处理~
内容的提问来源于stack exchange,提问作者sagar verma
相关产品推荐
相关产品推荐

