сценарий оболочки для запуска в цикле N раз, где N — пользовательский ввод

#linux #bash #shell #unix

#linux #bash #оболочка #unix

Вопрос:

 #!/bin/bash

read -p "Enter X in seconds: " X
read -p "Enter M(no. of times): " M

for i in {1.."$M"};
do
    gcc hello.c -o hello
    ./hello
    sleep "$X"
done;
  

Сценарий оболочки для запуска простого кода hello world C каждые X секунд в течение M раз, где
X и M — пользовательский ввод. Когда я запускаю скрипт, цикл for выполняется только один раз. Но когда я заменяю «$ M» любым числом, он выполняется хорошо. Итак, в чем моя ошибка здесь? Как я могу предоставить пользовательский ввод для итерации цикла?

Ответ №1:

Перед вычислением переменных происходит расширение в скобках Bash. Вместо этого вы можете использовать альтернативный цикл в стиле C:

 for((i=1; i<=M; i  )); do
    ....
done
  

Ответ №2:

 for i in $(seq X Y); do
  ... 
done