Bash中如何遍历数组检查元素内数字 输出符合条件的用户名与数值
Bash数组数字校验实现方法
直接使用for循环遍历数组即可完成需求,不需要其他复杂循环结构,具体实现逻辑和代码如下:
核心实现逻辑
- 遍历数组时使用
"${my_array[@]}"语法获取所有元素,双引号可以避免元素内容被错误拆分 - 对每个遍历到的元素,按空格分割为「用户名」「数字」两个部分
- 使用bash内置整数比较逻辑判断数字是否小于20,符合条件就直接输出对应内容
可直接运行的代码示例
#!/bin/bash # 原有数组定义 declare -a my_array=([0]="user.name 16" [1]="user.name2 11" [2]="user.name3 7" [3]="user.name 2") # for循环遍历所有数组元素 for single_item in "${my_array[@]}"; do # 按空格拆分单元素为用户名、数字两个变量 read -r username target_num <<< "$single_item" # 判断数字小于20则输出 if (( target_num < 20 )); then echo "符合条件的用户名:$username,对应原始数字:$target_num" fi done
运行输出结果
符合条件的用户名:user.name,对应原始数字:16 符合条件的用户名:user.name2,对应原始数字:11 符合条件的用户名:user.name3,对应原始数字:7 符合条件的用户名:user.name,对应原始数字:2
注意事项
- 不要用不带双引号的
${my_array[@]}或者${my_array[*]}遍历数组,否则元素内的空格会导致元素被拆分,遍历结果出错 - 数字判断建议使用
(( ))整数运算语法或者[[ $num -lt 20 ]],不要用字符串比较符号,避免出现字符串排序导致的逻辑错误 - 用内置
read拆分元素不需要调用外部命令,执行效率更高
内容的提问来源于stack exchange,提问作者Alecso
相关产品推荐
相关产品推荐

