Массивы в Bash Shell - PullRequest
       3

Массивы в Bash Shell

0 голосов
/ 30 марта 2020

Я хочу написать сценарий оболочки, чтобы получить следующий вывод:

$ Enter String: a2b3

aabbb

Я пытался использовать циклы и массивы for, но число l oop портится с индексом массива и оставляет ноль элементы в массиве, что делает невозможным распечатать массив как требуется.

Используемый скрипт:

echo "Enter your alphanumeric string: "
read a
n=${#a}

for (( i=0;i<n;i++ ))
do
string[i]=${a:i:1}

if [[ ${string[i]} =~ [a-zA-Z] ]]
then
alpha[i]=${string[i]}
elif [[ ${string[i]} =~ [0-9] ]]
then

if [[ ${string[i+1]} =~ [0-9] ]]
then
num[i]=${string[i]}${string[i+1]}
elif ! [[ ${string[i+1]} =~ [0-9] ]]
then
num[i]=${string[i]}
fi

fi
done

n=${#num[*]}
for (( i=0;i<n;i++ ))
do
echo num[$i] = ${num[i]}
done

n=${#alpha[*]}
for (( i=0;i<n;i++ ))
do
echo alpha[$i] = ${alpha[i]}
done

Вывод, который я получаю для того же:

$ sh Q1.sh
Enter your alphanumeric string: 
a6b3
num[0] =
num[1] = 6
alpha[0] = a
alpha[1] =

1 Ответ

0 голосов
/ 30 марта 2020

Лучший способ добавить элемент в массив - это array+=(...). Тогда вам не нужно беспокоиться о правильном указателе на левой стороне.

alpha+=("${string[i]}")
num+=("${string[i]}" "${string[i+1]}")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...