Чтобы получить второе значение массива, вам нужно иметь второй набор круглых скобок в регулярном выражении:
mystring1='<link rel="self" href="/api/clouds/1/instances/1BBBBBB"/> dsf <link rel="self" href="/api/clouds/1/instances/2AAAAAAA"/>'
regex='/instances/([A-Z0-9]+).*/instances/([A-Z0-9]+)'
[[ $mystring1 =~ $regex ]]
$ echo ${BASH_REMATCH[1]}
1BBBBBB
$ echo ${BASH_REMATCH[2]}
2AAAAAAA
Если вы хотите, чтобы step
было одинаковым в обоих случаях, запустите export step
в s1. Как только вы это сделаете, переменная step
будет просто присутствовать в s2 без необходимости явной передачи при ее вызове.
Если вы хотите установить другое step
в s2, чем в s1, добавьте step=whatever
перед вызовом s2. Например, чтобы сделать 8 в s2, вы должны сделать это:step=8./s2.sh
.
Одним из методов достижения этого результата является использование позиционных аргументов:
Это скрипт test1.sh:
#!/bin/bash
step=$1
step2=$2
if [[ step -eq 19 ]]; then
./test2.sh $step2
fi
и скрипт test2.sh:
#!/bin/bash
step=$1
if [[ step -eq 18 ]]; then
echo "success - step 18 executed"
fi
Затем вы можете вызвать test1.sh (в вашем случае s1.sh )вот так:
./test1.sh 19 18
После чего вы должны получить сообщение об успешном завершении. Хотя это требует небольшого редактирования исходных сценариев, это обеспечивает большую гибкость и делает расширение обоих сценариев более простым. Если вы решите использовать этот метод, я настоятельно рекомендую установить значения по умолчанию для переменных step и step2.