如何为此代码生成错误消息

时间:2017-12-08 20:02:38

标签: linux bash macos indexing

SELECT *
FROM StateTable
WHERE state IN(
    SELECT value
    FROM STRING_SPLIT(@states, ',') )

此代码将打印数组中值的索引,如果Entry不在数组中,如何改进它以打印错误消息

1 个答案:

答案 0 :(得分:2)

你可以添加一个标志变量, 循环前清除, 找到值时设置, 如果标志仍为空,则在循环后打印错误消息。

found=
for i in "${!my_array[@]}"; do
    if [[ "${my_array[$i]}" = "${value}" ]]; then
        echo "${i}"
        found=1
    fi
done

if [ ! "$found" ]; then
    echo Error: no such value in the array: $value
fi

可替换地, 您可以使用关联数组来保存值的索引及其在数组中的位置:

my_array=(red orange green)

declare -A index
for ((i = 0; i < ${#my_array[@]}; i++)); do
    index[${my_array[$i]}]=$i
done

local value=$1

if [ "${index[$value]}" ]; then
    echo "${index[$value]}"
else
    echo Error: no such value in the array: $value
fi