Страницы

Поиск по вопросам

понедельник, 10 июня 2019 г.

Как получить доступ к значению переменной, созданной внутри фигурных скобок в shell

Дано:
Код, разбивающий строку по точке и складывающий полученные части в переменные.
sh """ version='1.2.3.4'
echo \$version | { IFS=. read a b c d; echo \$a; }
echo \"a\" \$a """
При запуске получаем вот это:
+ version=1.2.3.4 + IFS=. read a b c d + echo 1.2.3.4 + echo 1 1 + echo a a
Проблема:
Из-за фигурных скобок переменные, в которых лежит нужные значения, недоступны.
Вопрос:
Каким образом получить значения переменных a, b, c, d за пределами фигурных скобок?


Ответ

А почему бы не прочитать сразу все значения в массив:
IFS='.' read -r -a arr <<< "${version}"
Результат:
[ ~]# echo ${arr[@]} 1 2 3 4 [ ~]# echo ${arr[0]} 1 [ ~]# echo ${arr[1]} 2 [ ~]# echo ${arr[2]} 3 [ ~]# echo ${arr[3]} 4
или так:
IFS='.' read -r -a a b c d <<< "${version}"

Комментариев нет:

Отправить комментарий