Использование входной переменной в 'For L oop' в Bash - PullRequest
2 голосов
/ 26 мая 2020

Я пытаюсь использовать входную переменную #REPLY в следующем коде for l oop ниже;

Если я использую синтаксис, например for i in {60..0}, то он однако работает нормально; попытка ввода переменной из оператора чтения " для i в {$ REPLY..0} " не удалась. Похоже, что чтение не распознает ввод как целочисленное значение; может кто-нибудь помочь, пожалуйста? Спасибо.

#!/bin/bash
clear
tput cup 5
read -p "What is the number of seconds? "
echo "Started:" $(date)
echo " "
echo " "
echo "Countdown Timer"
echo " "

for i in {$REPLY..0}
do
  tput cup 10 $1
  printf '%dh:%dm:%ds\n' $(($i/3600)) $(($i%3600/60)) $(($i%60))
  tput civis
  sleep 1
done
tput cnorm
echo " "
echo "Finished:" $(date)

1 Ответ

2 голосов
/ 26 мая 2020

Да, вы не можете использовать переменную в расширении скобок . Итак, решение простое: arithmeti c form l oop:

for ((i=REPLY; i>=0; i--)); do
    [...]

... и пожалуйста , никаких ответов со злом eval, спасибо

...