このメニューがありますが、テキストを間違って入力した場合、ユーザーに誤ったオプションを指定すると機能しません。
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