制御構文 ~ while, until ループ

制御構文 while ~ コマンドが成功している間実行

code
touch {1..3}.txt

# ファイルが存在しない場合 cat コマンドは失敗する
while cat ./*.txt; do
  echo "while ~ do : files=$(find . -name '*.txt' | wc -l)"
  # ファイルを 1 つ削除
  rm "$(find . -name '*.txt' | head -n 1)"
done
stdout
while ~ do : files=3
while ~ do : files=2
while ~ do : files=1
stderr
'./*.txt': No such file or directory
code
i=0
# i < 3 の場合に test コマンドは成功する
while test $i -lt 3; do
  echo "i=${i}"
  i=$((i+1))
done
stdout
i=0
i=1
i=2
code
# ファイルが存在しない場合 cat コマンドは失敗する(! で反転)
while ! cat ./*.txt; do
  echo "while ~ do : files=$(find . -name '*.txt' | wc -l)"
  # ファイルを作成
  touch a.txt
done
stdout
while ~ do : files=0
stderr
'./*.txt': No such file or directory
code
i=5
# i < 3 の場合に test コマンドは成功する(! で反転)
while ! test $i -lt 3; do
  echo "i=${i}"
  i=$((i-1))
done
stdout
i=5
i=4
i=3

制御構文 until ~ コマンドが失敗している間実行

code
# ファイルが存在しない場合 cat コマンドは失敗する
until cat ./*.txt; do
  echo "until ~ do : files=$(find . -name '*.txt' | wc -l)"
  # ファイルを作成
  touch a.txt
done
stdout
until ~ do : files=0
stderr
'./*.txt': No such file or directory
code
i=5
# i < 3 の場合に test コマンドは成功する
until test $i -lt 3; do
  echo "i=${i}"
  i=$((i-1))
done
stdout
i=5
i=4
i=3
code
touch {1..3}.txt

# ファイルが存在しない場合 cat コマンドは失敗する(! で反転)
until ! cat ./*.txt; do
  echo "until ~ do : files=$(find . -name '*.txt' | wc -l)"
  # ファイルを 1 つ削除
  rm "$(find . -name '*.txt' | head -n 1)"
done
stdout
until ~ do : files=3
until ~ do : files=2
until ~ do : files=1
stderr
'./*.txt': No such file or directory
code
i=0
# i < 3 の場合に test コマンドは成功する(! で反転)
until ! test $i -lt 3; do
  echo "i=${i}"
  i=$((i+1))
done
stdout
i=0
i=1
i=2