簡體   English   中英

Bash while 循環中的多個條件

[英]Bash Multiple conditions in while loop

我試圖在使用四個條件的 bash 中獲得一個簡單的 while 循環,但是在嘗試了來自各種論壇的許多不同語法之后,我找不到解決方案。 當我寫“Prod”或“Dev”或“Admin”時,我會留在循環中。

while [ -z $vmProfil ] || [ $vmProfil != 'Prod' ] || [ $vmProfil != "Dev" ] || [ $vmProfil != "Admin" ]
do 
    read -p 'Choose vm profil between Prod, Dev or Admin :' vmProfil
done

您正在使用|| 你應該在哪里使用&& ; 無論vmProfil有什么值,至少!=條件中的一個必須為真。

while [ -z "$vmProfil" ] || { [ "$vmProfil" != 'Prod' ] && [ "$vmProfil" != "Dev" ] && [ "$vmProfil" != "Admin" ]; }

您還可以檢查否定檢查任何條件是否為真的結果。

while [ -z "$vmProfil" ] || ! { [ "$vmProfil" = 'Prod' ] || [ "$vmProfil" = "Dev" ] || [ "$vmProfil" = "Admin" ]; }

不過,我會將其寫為帶有顯式中斷的無限循環。

while :; do
  read -p '...' vmProfil
  case $vmProfil in
    Prod|Dev|Admin) break ;;
  esac
done

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM