-1
hour_init=$((1)); 
min_init=$((30)); 
sec_init=$((00)); 
hour=$hour_init; 
min=$min_init; 
sec=$sec_init; 
while [ $hour -gt 0]; 
while [ $min -gt 0 ]; 
while [$sec -gt 0]; 
do clear; 
echo $sec | figlet; 
sleep 1; 
sec=$(($sec- 1)); 
done; 
sec=$sec_init; 
min=$(($min- 1)); 
done; 
hour=$($hour- 1); 
min=$min_init; 
sec=$sec_init; 
done;

我写这篇文章是为了获得一个基于小时:分钟:秒的计时器。然而我做不到!我对 bash 脚本非常陌生。有人可以告诉我我在这里做错了什么吗?

4

1 回答 1

3

[请注意 s 之后和 s 之前的空格],如果您最初设置为 0,这将不会循环sec(因为您的循环在sec非正数时退出。另请注意以下hour=$(($hour- 1))位:

hour_init=1
min_init=60
sec_init=60
hour=$hour_init
min=30
sec=0
while [ $hour -gt 0 ] 
do
  while [ $min -gt 0 ]; do
    while [ $sec -gt 0 ] 
    do clear
      echo "$hour:$min:$sec"
      sleep 1
      sec=$(($sec- 1))
    done
    sec=$sec_init
    min=$(($min- 1))
  done
  hour=$(($hour- 1))
  min=$min_init
  sec=$sec_init
done
于 2013-03-22T03:32:52.273 回答