Bash - Как передать переменную из скрипта в цикл while?

avatar
Joe
7 апреля 2018 в 23:23
72
1
0

У меня есть это scriptA.sh:

#!/bin/bash

total=0
total=$((total+1))
export total

и я хочу поместить этот скрипт в цикл while следующим образом:

#!/bin/bash

max=0
while [[ "$max" -lt 2 ]]; do
bash scriptA.sh
max=$(echo $total)
echo Max: $max
sleep 1
done

Но значение $max всегда пусто, вот результат, который я хочу:

Max: 1
Max: 2

Как передать переменную из скрипта в цикл while?

Источник

Ответы (1)

avatar
Cobra_Fast
7 апреля 2018 в 23:37
0
  • Используйте . вместо bash, чтобы выполнить индекс в текущем контексте, а не создавать новый.
  • Это также избавляет от необходимости использовать export.
  • Определите $total в основном сценарии и измените его только в нижнем индексе.
  • Скопируйте значение $total в $max напрямую, без echo.
  • Применить отступ, чтобы сделать код более читабельным.

#!/bin/bash

total=$(($total+1))

#!/bin/bash

total=0
max=0
while [[ "$max" -lt 2 ]]; do
    . scriptA.sh
    max=$total
    echo Max: $max
    sleep 1
done

Отпечатки:

Макс.: 1
Макс.: 2