![입력 옵션이 잘못된 경우 bash 오류에서 메뉴를 만드는 방법](https://linux55.com/image/117154/%EC%9E%85%EB%A0%A5%20%EC%98%B5%EC%85%98%EC%9D%B4%20%EC%9E%98%EB%AA%BB%EB%90%9C%20%EA%B2%BD%EC%9A%B0%20bash%20%EC%98%A4%EB%A5%98%EC%97%90%EC%84%9C%20%EB%A9%94%EB%89%B4%EB%A5%BC%20%EB%A7%8C%EB%93%9C%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
이 메뉴가 있지만 텍스트를 잘못 입력한 경우 사용자에게 잘못된 옵션을 제공하면 작동하지 않습니다.
if [ -n "$1" -a -n "$2" -a -f "$1" ]
then
dts=($(cat $1 | cut -d: -f$2))
for i in ${!dts[@]}
do
echo "$i) ${dts[$i]} "
done
read -p "Select a user to delete: " OKSELUSRGRP
p=$( echo $OKSELUSRGRP | grep -E ^[0-${#dts[@]}]$ )
if [ -n "$p" ]
then
OKSELUSRGRP=${dts[$p]}
else
OKSELUSRGRP=""
fi
else
echo "Error, select a correct option"
sleep 1
fi
어떤 아이디어가 있나요?
감사해요!
답변1
스크립트가 무엇을 하고 있는지 잘 모르겠지만 아마도 이와 같은 것을 시도해 볼 수도 있습니다.
if [ -n "$1" -a -n "$2" -a -f "$1" ]; then
dts=($(cat $1 | cut -d: -f$2))
for i in ${!dts[@]}; do
echo "$i) ${dts[$i]} "
done
read -p "Select a user to delete: " OKSELUSRGRP
p=$(echo $OKSELUSRGRP | grep -E ^[0-${#dts[@]}]$)
while [ -z "$p" ]; do
echo "Error, select a correct option"
sleep 1
read -p "Select a user to delete: " OKSELUSRGRP
p=$(echo $OKSELUSRGRP | grep -E ^[0-${#dts[@]}]$)
done
OKSELUSRGRP=${dts[$p]}
else
echo "
Usage: $0 [file] [something else]
$0 can be used to select users or something.
"
fi