shell根据数组元素获取下标 只看楼主

已知根据下标获取元素的写法是
a=(14 25 39 46 52)
echo ${a[2]}
输出结果是 39

那么根据元素如何查询该元素的对应下标呢?
  • 2# heihai
  • 2023-3-31 22:08:18
不同下标相同数据呢,要怎么判断
  • 3# maxkvm
  • 2023-3-31 22:09:20
引用: heihai 发表于 2023-3-31 22:08
不同下标相同数据呢,要怎么判断

输出两个不同的下标值
  • 4# HOH
  • 2023-3-31 22:10:37
这位同学,我布置的作业请自己完成
  • 5# maxkvm
  • 2023-3-31 22:12:35
引用: HOH 发表于 2023-3-31 22:10
这位同学,我布置的作业请自己完成

不会就不要凑热闹
计算机的排序是从0开始的,不是常识中的1.

你看到的a2 ,在计算机执行里,是第三个数。

a=(14 25 39 46 52)

a0 =14
a1 =25
a2 =39
  • 7# maxkvm
  • 2023-3-31 22:19:13
引用: yanzhiling2002 发表于 2023-3-31 22:17
计算机的排序是从0开始的,不是常识中的1.

你看到的a2 ,在计算机执行里,是第三个数。

我没说错啊,下标2对应的元素是39
引用: maxkvm 发表于 2023-3-31 22:19
我没说错啊,下标2对应的元素是39

不好意思,没看清楚要求

我能想到的就是键值对用shell操作比较麻烦
我给你问了一下chatgpt

在shell中,可以使用数组来存储元素,并使用循环结构来查找元素对应的下标。 例如,下面的脚本演示了如何使用循环结构查找数组中指定元素的下标:
shell
#!/bin/bash

# 定义一个数组
array=("apple" "banana" "orange" "pear" "peach")

# 需要查找的元素
element="orange"

# 使用循环结构查找元素
for i in "${!array[@]}"; do
  if [[ "${array[$i]}" = "${element}" ]]; then
    echo "元素 ${element} 的下标为 ${i}"
    break
  fi
done
在上述脚本中,首先定义了一个数组`array`,然后定义了需要查找的元素`element`。接着,使用`for`循环遍历数组中的每个元素,使用`if`语句判断当前元素是否为需要查找的元素,如果是,则输出该元素的下标,并使用`break`语句跳出循环。 需要注意的是,在`for`循环中,使用`${!array[@]}`来获取数组中所有元素的下标。`${array[$i]}`表示获取数组中下标为`$i`的元素的值。 如果需要查找数组中所有符合条件的元素的下标,可以将`break`语句删除,并将输出语句改为打印所有符合条件的元素的下标。
你说的不清不楚,会重复吗?是大小排列好的么?
123下一页