Пасс Параметр на перенаправленный скрипт в Linux

Чтобы получить второе значение массива, вам нужно иметь второй набор круглых скобок в регулярном выражении:

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
0
13.10.2018, 07:03
2 ответа

Если вы хотите, чтобы stepбыло одинаковым в обоих случаях, запустите export stepв s1. Как только вы это сделаете, переменная stepбудет просто присутствовать в s2 без необходимости явной передачи при ее вызове.

Если вы хотите установить другое stepв s2, чем в s1, добавьте step=whateverперед вызовом s2. Например, чтобы сделать 8 в s2, вы должны сделать это:step=8./s2.sh.

0
28.01.2020, 04:12

Одним из методов достижения этого результата является использование позиционных аргументов:

Это скрипт 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.

0
28.01.2020, 04:12

Теги

Похожие вопросы