Вместо использования команды `grep | wc -l` для подсчета количества шагов в скрипте, можно воспользоваться переменной счетчика. В каждом шаге увеличивайте значение счетчика на 1. Пример: ```bash #!/bin/bash # Инициализация счетчика count=0 # Шаг 1 (( count++ )) echo "Выполняется шаг 1..." # Шаг 2 (( count++ )) echo "Выполняется шаг 2..." # Шаг 3 (( count++ )) echo "Выполняется шаг 3..." # Вывод общего количества шагов echo "Всего шагов: $count" ``` Таким образом, вы можете точно знать количество шагов и использовать его для прогресс-бара или любых других нужд.
Тогда воспользуйтесь оператором "+=" для увеличения значения NOW_STEP на 1. Создание отдельных функций для каждого шага не имеет смысла.
Если количество шагов в вашем скрипте задано заранее, то добавьте статическую переменную в начало скрипта, чтобы она отслеживала количество шагов. Используйте grep в сочетании с командой wc для нахождения количества шагов. Обратите внимание, что grep тоже будет учитываться и добавлять 1. Однако, если количество шагов в скрипте динамическое, то использование функций перед и после каждого шага необходимо. Рассмотрите возможность организации шагов в массиве и выполнение циклом по массиву. Пример ниже поможет вам понять это лучше.
```bash
#!/bin/bash
# Определите шаги в массиве
steps=("initialize" "build" "deploy" "notify")
# Выведите общее количество шагов
echo "Всего шагов: ${#steps[@]}"
# Цикл по массиву шагов
for step in "${steps[@]}"; do
echo "Выполнение шага: $step"
# Вызов соответствующей функции
$step
done
# Определение функций шагов
function initialize() {
echo "Шаг initialize"
# ваш код
}
function build() {
echo "Шаг build"
# ваш код
}
function deploy() {
echo "Шаг deploy"
# ваш код
}
function notify() {
echo "Шаг notify"
# ваш код
}
```
Выполняя этот скрипт, вы увидите, как выполняется каждый шаг в цикле, вызывается соответствующая функция и выводится соответствующее сообщение.