whiptail 대화 상자에 사용자가 입력 한 올바른 장치를 확인했는지 또는 사용자가 잘못된 내용을 입력했는지 확인하고 싶습니다.Bash - 사용자 입력을 배열과 비교하십시오.
나는 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"나는거야 :
이의 그 사용자의 입력을 가정 해 보자 wlan0 eth0를 :
이
내 코드입니다 ETH wlan0 wlan1어떻게 사용자에게 입력이 올바르다는 것을 알려줍니다 : wlan0, but 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
당신에게 대단히 감사를
일반적으로, 'grep | awk | tr | sed는 아마 하나의 Awk 스크립트로 리팩터링되는 것이 더 낫다. 일반 아이디어는 [grep의 쓸모없는 사용] (http://www.iki.fi/era/unix/award.html#grep)을 참고하십시오. – tripleee
'ifconfig -a | awk '/ 이더넷/{printf ("% s % s", s, $ 1); – tripleee
팁을 주셔서 감사합니다 –