#!/bin/bash
var="true"
i=1
while $var
do
read -p "Enter value (true/false): " var
if [[ $var == "true" ]]
then
echo "Iteration : $i"
((i ))
elif [[ $var == "false" ]]
then
echo "Exiting the process"
elif [[ $? -eq 1 ]]
then
echo "Invalid Choice."
echo "Avaialable Choices are true or false"
exit
fi
done
腳本作業正常。我輸入 true 回圈將迭代為 false 腳本停止。如果將輸入任何其他值而不是 true 或 false,我希望腳本將繼續詢問“輸入值”。
uj5u.com熱心網友回復:
這將使用更學術的語法來做同樣的事情:
i=0
while :; do
printf 'Enter value (true/false): '
read -r var
case $var in
true)
i=$((i 1))
printf 'Iteration : %d\n' $i
;;
false)
printf 'Exiting the process\n'
break
;;
*)
printf 'Invalid Choice.\nAvaialable Choices are true or false\n'
;;
esac
done
uj5u.com熱心網友回復:
您可能會發現這是一個更清潔的解決方案:
i=0
while true; do
read -p "enter value: " myinput
if [[ $myinput = true ]]; then
echo "iteration $i"
i=$((i 1))
elif [[ $myinput = false ]]; then
echo "exiting"
exit
else
echo "invalid input"
fi;
done;
我在您當前的代碼中看到的問題是不清楚哪個命令的退出狀態 $? 指。它是指上一個 elif 塊中的 echo 嗎?還是最后的條件檢查?或者完全是別的什么?
uj5u.com熱心網友回復:
我是 bash 新手。我試過了:
#!/bin/bash
i=1
while [[ $var != "false" ]]
do
read -p "Enter value (true/false): " var
if [[ $var == "true" ]]
then
echo "Iteration : $i"
((i ))
elif [[ $var == "false" ]]
then
echo "Exiting the process"
elif [[ $? -eq 1 ]]
then
echo "Invalid Choice."
echo "Avaialable Choices are true or false"
fi
done
我改變while $var了while [[ $var ]]因為while像if. 它運行給定的命令。在那里它是 $var 的值。
然后我轉到exit第一個 elif 運算式的結尾。因此,如果用戶鍵入 false 程式將退出。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/333643.html
上一篇:同時運行檔案的所有行
