我需要根據 if then 陳述句中的預定服務器串列檢查 5 個字符的用戶輸入,以確保 then 陳述句僅對正確的輸入起作用。
這是我的代碼
printf "please select a system (serv1, serv2, serv3 or serv4):"
read -e -n 5 input
if [[ $input == "serv1" || "serv2" || "serv3" || "serv4" ]]
then
execute some code with $input value
else
echo "$input is an invalid selection"
fi
我遇到的這個問題是無論用戶輸入如何,它都好像它是一個有效的條目。
uj5u.com熱心網友回復:
條件要求重復$input變數,如下所示:
if [[ $input == "serv1" || $input == "serv2" || $input == "serv3" || $input == "serv4" ]]
then
execute some code with $input value
else
echo "$input is an invalid selection"
fi
uj5u.com熱心網友回復:
正如@Zlemini 已經說過的,您需要修復 if 陳述句的語法,因為沒有比較/運算子的字串將始終回傳 true。
您可以選擇執行以下操作:
VALID_SERVERS="serv1 serv2 serv3 serv4"
if [[ "${VALID_SERVERS}" == *"$input"* ]]; then
echo "execute some code with $input value"
else
echo "$input is an invalid selection"
fi
上面的代碼將檢查提供的值是否是 VALID_SERVERS 的子字串。
uj5u.com熱心網友回復:
另一種方法是使用case陳述句:
#!/bin/bash
printf "please select a system (serv1, serv2, serv3 or serv4): "
read -e -n 5 input
case $input in
serv1 | serv2 | serv3 | serv4) echo "execute some code with $input value";;
*) echo "$input is an invalid selection";;
esac
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/453110.html
標籤:重击
