1. ホーム
  2. bash

[解決済み] BashでDo-whileループをエミュレートする

2022-03-07 11:40:01

質問

Bashでdo-whileループをエミュレートする最良の方法は何ですか?

に入る前に条件をチェックすることができました。 while ループの中で条件を再確認し続けますが、これは重複したコードです。もっとすっきりした方法はないでしょうか?

私のスクリプトの擬似コード。

while [ current_time <= $cutoff ]; do
    check_if_file_present
    #do other stuff
done

これは check_if_file_present の後に起動した場合は $cutoff 時間、そしてdo-whileはそうでしょう。

どのように解決するのですか?

簡単な解決策を2つ紹介します。

  1. whileループの前に一度だけコードを実行する

    actions() {
       check_if_file_present
       # Do other stuff
    }
    
    actions #1st execution
    while [ current_time <= $cutoff ]; do
       actions # Loop execution
    done
    
    
  2. または

    while : ; do
        actions
        [[ current_time <= $cutoff ]] || break
    done