GNU/Linux >> Linux の 問題 >  >> Linux

Bash while ループで and を使用する

[] bash の演算子は、test への呼び出しのシンタックス シュガーです。 man test に記載されています . 「または」は中置 -o で表されます 、ただし「and」が必要です:

while [ $guess != 5 -a $guess != 10 ]; do

あなたが望むものを達成するための2つの正しい移植可能な方法があります。
古き良き shell 構文:

while [ "$guess" != 5 ] && [ "$guess" != 10 ]; do

そして bash 構文 (指定):

while [[ "$guess" != 5 && "$guess" != 10 ]]; do

移植可能で堅牢な方法は、 case を使用することです 代わりにステートメント。慣れていない場合は、構文を理解するのに少し時間がかかるかもしれません。

while true; do
    case $guess in 5 | 10) break ;; esac
    echo Your answer is $guess. This is incorrect. Please try again.
    echo -n "What is your guess? "
    read guess  # not $guess
done

while true を使用しました しかし、実際には case を使用できます そこに直接ステートメント。ただし、読んで維持するのは面倒です。

while case $guess in 5 | 10) false;; *) true;; esac; do ...

Linux
  1. 自動化のためのBashの使用

  2. PythonとBashを使用したPodmanRESTfulAPIの調査

  3. プロのヒント:For、While、Untilループ

  1. Bash初心者シリーズ#8:Bashのループ

  2. ループの維持 – Bash For、While、Until ループの例

  3. Bash を使用してファイルを検索してコピーする

  1. Bashでループを作成する方法

  2. BashForループガイドと例

  3. Linux バッシュ。 for ループと関数、数値の加算