【问题标题】:Using an input variable in a 'For Loop' in Bash在 Bash 的“For循环”中使用输入变量
【发布时间】:2020-09-12 16:17:54
【问题描述】:

我正在尝试在下面的for 循环代码中使用#REPLY 输入变量;

如果我使用诸如 for i in {60..0} 之类的语法,那么它可以正常工作;尝试读取语句“for i in {$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)

【问题讨论】:

标签: bash loops for-loop


【解决方案1】:

是的,您不能在大括号扩展中使用变量。所以,解决方案是简单的算术形式循环:

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

...请,不要回复邪恶的eval,谢谢

【讨论】:

  • 成功了,非常感谢您的大力协助。
  • 给新手的建议:如果一个答案解决了您的问题,请点击旁边的大复选标记 (✓) 接受它,也可以选择投票(投票至少需要 15 声望)点)。如果您发现其他答案有帮助,请给他们投票。接受和投票有助于未来的读者。请看the relevant help-center article
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 2012-10-23
  • 1970-01-01
  • 2013-06-15
  • 2017-06-15
相关资源
最近更新 更多