我想通过给出一个arg来创建一个返回元素数组位置的bash脚本.请参阅下面的代码,我使用
#!/bin/bash
args=("$@")
echo ${args[0]}
test_array=('AA' 'BB' 'CC' 'DD' 'EE')
echo $test_array
elem_array=${#test_array[@]}
for args in $test_array
do
echo
done
Run Code Online (Sandbox Code Playgroud)
最后,我应该输出如下:
$script.sh DD
4
Run Code Online (Sandbox Code Playgroud)
#!/bin/bash
A=(AA BB CC DD EE)
for i in "${!A[@]}"; do
if [[ "${A[i]}" = "$1" ]]; then
echo "$i"
fi
done
Run Code Online (Sandbox Code Playgroud)
请注意,该"${!A[@]}"
表示法给出了数组中有效索引的列表.一般来说,你不能只从0到0 "${#A[@]}" - 1
,因为索引不一定是连续的.如果数组元素分配中存在间隙或者某些元素未被设置,则索引范围中可能存在间隙.
上面的脚本将输出数组的所有索引,其内容等于脚本的第一个命令行参数.
编辑:
在您的问题中,您似乎希望将结果作为基于一个数组的索引.在这种情况下,您可以将结果增加一个:
#!/bin/bash
A=(AA BB CC DD EE)
for i in "${!A[@]}"; do
if [[ "${A[i]}" = "$1" ]]; then
let i++;
echo "$i"
fi
done
Run Code Online (Sandbox Code Playgroud)
但请记住,在与基于零的数组一起使用之前,必须减少此索引.