Bash脚本遍历最后两个参数不符合预期,求错误排查
Bash脚本错误分析与修正
错误点说明
- 数组初始化错误:
list_total=( "$3 $4" )中的双引号会把$3和$4拼接成单个字符串元素存入数组,导致list_total数组仅包含一个元素"Jim Jess",而非两个独立的参数值。 - 循环遍历错误:
for my_element in "${list_total}";的写法只会读取数组的第一个元素(即合并后的字符串),无法遍历数组内的所有元素,因此循环仅执行一次。
修正后的脚本(方法一:正确使用数组)
#!/usr/bin/env bash arg1=$1 arg2=$2 # 将$3和$4作为两个独立元素初始化数组 list_total=( "$3" "$4" ) # 使用[@]遍历数组的所有元素 for my_element in "${list_total[@]}"; do echo "$my_element" echo "Wow" done
修正后的脚本(方法二:直接遍历参数,更简洁)
#!/usr/bin/env bash arg1=$1 arg2=$2 # 直接遍历最后两个命令行参数,无需额外数组 for my_element in "$3" "$4"; do echo "$my_element" echo "Wow" done
验证效果
执行命令sh myscript.sh Joe Jack Jim Jess后,输出将符合预期:
Jim Wow Jess Wow
内容的提问来源于stack exchange,提问作者Alexis
相关产品推荐
相关产品推荐

