たとえば、ポートを確認したいと思います45:68
。テスト変数を定義しました。
echo "ports"
read in
ポートを配列に分割しました。
IFS=":" read -ra port <<< "$in"
ポートは65535未満で、数字のみを含め、入力する必要があります。だから、言及された条件に従ってwhileループを設定しました。
while [ -z "${port[@]}" ] || [[ "${port[0]}" =~ ^-?[0-9]+$ ]] || [[ "${port[1]}" =~ ^-?[0-9]+$ ]] ||[ "${port[@]}" -gt 65535 ]
do
port=$(whiptail --title "No!" --inputbox --nocancel "Error MSG." 12 50 3>&1 1>&2 2>&3)
done
スクリプトを実行した後、ループに閉じ込められます。
ポートを正常に解決するより良い方法はありますか?
答え1
@roamiaが提案したようにfor
ループを使用し、以下を使用して各要素を検証します。if
for current_port in "${port[@]}"; do
if ! [[ -n $current_port && $current_port =~ ^-?[0-9]+$ && $current_port -le 65535 ]]; then
port=$(whiptail --title "No!" --inputbox --nocancel "Error MSG." 12 50 3>&1 1>&2 2>&3)
fi
done
-
PSポート番号でダッシュを見つけるのはなぜですか?