Bash - 比较用户输入和数组

时间:2016-08-25 06:44:42

标签: arrays bash validation user-input whiptail

我想在whiptail对话框中验证用户输入正确的设备或用户输入错误。

我在谷歌上搜索了2天,却找不到任何类似的问题。

这是我的代码:

ALL_DEVICES=$(ifconfig -a | grep Ethernet | awk '{print $1}' | tr '\n' ' ' | sed -e 's/[[:space:]]*$//')
U_INPUT=$(whiptail --title "[choose]" --inputbox "Please input your device" 0 0 all 3>&1 1>&2 2>&3)

如果我回复“$ ALL_DEVICES”,我会得到:eth0 wlan0

我们假设用户输入:eth wlan0 wlan1

如何通知用户他输入正确:wlan0,但是eth和wlan1输入不正确,因为该设备不存在。

我试过这段代码:

ALL_DEVICES=$(ifconfig -a | grep Ethernet | awk '{print $1}' | tr '\n' ' ' | sed -e 's/[[:space:]]*$//')
U_INPUT=$(whiptail --title "[choose]" --inputbox "Please input your device" 0 0 3>&1 1>&2 2>&3)

arr1=("$ALL_DEVICES")
arr2=("$U_INPUT")

echo "arr1 ${arr1[@]}"
echo "arr2 ${arr2[@]}"

FOUND="echo ${arr1[*]} | grep ${arr2[*]}"

if [ "${FOUND}" != "" ]; then
   echo "Valid interfaces: ${arr2[*]}"
else
   echo "Invalid interfaces: ${arr2[*]}"
fi

非常感谢

1 个答案:

答案 0 :(得分:0)

我会这样:

if (guess.isWithin(5) = randomNumber)

也许它可以更简化,但你可以阅读要做的步骤。首先查看字符串数组,查找设备,然后将其与用户输入进行比较,并撰写关于查找它的内容。最后一步是澄清是否找到了值。