반응형

Shell script를 작성하다보면, 10 ~ 60초 정도 대기하는 시간에 멀뚱히 터미널을 쳐다보는 것이 지루할 때가 있다.

지루하지 않더라도 터미널에 수십초 동안 아무것도 출력되지 않으면,

"어~ 스크립트가 중간에 hang up 상태로 빠졌나?"

이런 의심을 하게 된다.

이럴 때, 시간이 흘러가는 것처럼 숫자가 올라가거나 내려가거나(count-up, count-down) 하면 좋다.

긴 설명은 필요없고, 아래 script를 활용하면 대기하는 지루함을 줄일 수 있다.

 

##
## NOTE:
##  macOS와 Ubuntu, CentOS의 date 명령에 대한 output format 옵션이 달라서 script가 조금 다르다.
##  


##
## NOTE: Ubuntu, CentOS에서 동작하는 스크립트
##

#!/usr/bin/bash

function countdown(){
   date_start=$((`date +%s` + $1));
   while [ "$date_start" -ge `date +%s` ]; do
     left_time="$(date -u --date @$(($date_start - `date +%s`)) +%M:%S)";
     echo -ne "Countdown  $left_time \r"
     sleep 0.1
   done
}

countdown 5


---


##
## NOTE: macOS에서 동작하는 스크립트
##

#!/opt/homebrew/bin/bash

function countdown(){
   date_start=$((`date +%s` + $1));

   while [ "$date_start" -ge `date +%s` ]; do
     curr_time=$((`date +%s`))

     left_time=$(($date_start - $curr_time))
     echo -ne "Countdown  $left_time \r"
     sleep 0.1
   done
}

countdown 3

 

+ Recent posts