Shell (sh) скрипт-массив

Пыталась найти массив для выполнения в скрипте оболочки sh. Кроме BASH и т. Д. Не нашли много, кроме массивов, не поддерживаемых в sh.

Вот что я придумал, используя setvar и eval. Есть ли способ лучше? Есть ли способ устранить сетвар и / или eval?

#!/bin/sh
# FreeBSD 11.1

# Kind of an array workaround.

echo -e "Simulated array creation and element assignment using dynamic index."
array() {
    i=0
    for x in $2
    do
        setvar ${1}_${i} $x    # any way to do without setvar?
        i=$((i+1))
    done
    setvar ${1}_cnt $i
}

array "my_arry" "a b c"

echo -e "\nSimulated array element access using dynamic index."
i=0
while [ $i -lt $my_arry_cnt ]
do
    eval aev=\${my_arry_${i}}    # any way to do without eval?
    i=$((i+1))
    echo $aev
done

echo -e "\nSimulated array element access using static index."
echo ${my_arry_0}
echo ${my_arry_1}
echo ${my_arry_2}

0 ответов

Другие вопросы по тегам