完全に機能する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