如何检查数组中的第一个元素

IGt

我设置了以下数组循环。它只是简单地循环遍历字符串,并检查每个项目是否与字母匹配,并相应地设置一些变量。

#!/usr/bin/env bash
IN="ItemName -a -b"

itemA=0
itemB=0
itemI=0

while IFS=' -' read -ra ARR; do
    for x in "${ARR[@]}"; do
        echo "x = $x"
        y=${x:0:1}
        echo "y = $y"
        case $y in
            "a") itemA=1 ;;
            "b") itemB=1 ;;
            "I") itemI=1 ;;
        esac
    done
done <<< "$IN"

echo "itemA is $itemA
echo "itemB is $itemB"
echo "itemI is $itemI" 

但是,对于第一个元素(“ itemName”),我需要单独设置此元素,以便不作为大小写检查的一部分对其进行检查。理想情况下,我希望最终得到:

itemName is ItemName
itemA is 1
itemB is 1
itemI is 0

如何检查第一个元素?我试过了

if [ ${ARR[0]} ] ; then
    itemName=$x
else
 . . . 
fi  

但最终没有设置任何变量。

芒登

我不明白您为什么要使用while循环。松开while,您的问题就消失了:

#!/usr/bin/env bash
IN="ItemName -a -b"
itemA=0
itemB=0
itemI=0

## Read the array, no loop required
IFS=' -' read -ra ARR <<<"$IN"
## Save the 1st element as itemN
itemN=${ARR[0]}
## Remove itemN from the array
unset ARR[0]
## Now loop over the rest
for x in "${ARR[@]}"; do
    y=${x:0:1}
    case $y in
        "a") itemA=1 ;;
        "b") itemB=1 ;;
        "I") itemI=1 ;;
        esac
done

echo "itemN is $itemN"
echo "itemA is $itemA"
echo "itemB is $itemB"
echo "itemI is $itemI" 

运行上面的脚本可以打印:

itemN is ItemName
itemA is 1
itemB is 1
itemI is 0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何检查数组c ++中的第一个元素和最后一个元素

如何检查数组数组的第一个索引

Javascript检查元组的第一个元素是否存在于元组数组中

如何按数组的第一个元素分组?

如何获得数组的第一个元素?

如何提取数组的第一个找到的元素?

如何加入数组中除第一个元素之外的所有元素?

跳过Golang中数组的第一个元素

从数组中删除第一个元素

刷卡中的数组获取第一个元素

指向C中数组的第一个元素

在def中返回数组的第一个元素

ngxs setstate数组中的第一个元素

数组中的第一个非负元素

读取数组中的第一个元素

如何通过第一个元素对象键对数组中的数组进行分组

数组第一个元素

如何获取python列表中的第一个元素并检查它是否为None?

在Swift中,如何检查Array的第一个元素是否等于值列表?

如何检查 vector<string> 的第一个元素是否是 C++ 中的引号

如何检查列表的每个元素中是否包含相同的第一个索引

如何检查 JavaScript 中没有显示样式的第一个元素?

如何检查数组中的每个元素以查看它是否存在于另一个数组中,并将第一个数组中的元素替换为其他元素?

从数组中删除第一个元素并返回减去第一个元素的数组

如何在 ReactJs 中仅打印 JSON 数组中的第一个元素?

如何访问另一个 JSON 对象数组中的 JSON 对象数组的第一个元素?

如何找到符合特定条件的Ruby数组中的第一个元素?

如何移动除数组Javascript中的第一个元素以外的内容?

如何获取 API 并打印响应数组中的第一个元素?