Дано:
Код, разбивающий строку по точке и складывающий полученные части в переменные.
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}"
Комментариев нет:
Отправить комментарий