whileループの複数の条件

whileループの複数の条件

完全に機能する2つのbashスニペットがあります。

MODE=a;while [[ !("${MODE}" =~ ^[0-9]+$) ]];do read -p 'mode?' MODE;done

そして

MODE=a;while [[ "${MODE}" != 'b' ]]; do read -p 'mode?' MODE;done   

私はこれら2つの条件を組み合わせたいと思います。私はこの記事のアドバイスに従おうとしました(whileループの複数の条件)。しかし、私にとってはうまくいきません。

# -o演算子を使用した単一のPOSIXテストコマンド:

MODE=a;while [ !("${MODE}" =~ ^[0-9]+$) -o "${MODE}" != 'b' ];do read -p 'mode?' MODE;done

#2 POSIXテストコマンドは||を使用してリストにリンクされています。

MODE=a;while [ !("${MODE}" =~ ^[0-9]+$) ] || [ "${MODE}" != 'b' ]; do read -p 'mode?' MODE;done

#2 BASH条件式||演算子:

MODE=a;while [[ !("${MODE}" =~ ^[0-9]+$) ]] || [[ "${MODE}" != 'b' ]]; do read -p 'mode?' MODE;done

#2 BASH算術式は||を使用してリストに連結されます。

MODE=a;while (( !("${MODE}" =~ ^[0-9]+$) )) || (( "${MODE}" != 'b' )); do read -p 'mode?' MODE;done

# ||を使用する単一のBASH算術式演算子:

MODE=a;while (( !("${MODE}" =~ ^[0-9]+$) || "${MODE}" != 'b' )); do read -p 'mode?' MODE;done

みんなありがとうございます! !

答え1

ありがとうゴードン!

MODE=a;while [[ !("${MODE}" =~ ^[0-9]+$) ]] && [[ "${MODE}" != 'b' ]]; do read -p 'mode?' MODE;done

関連情報