Я не могу понять, почему мой простой скрипт bash анализирует не объявленные флаги. Вот как это выглядит:
#!/bin/bash
while getopts "hi" OPTIONS
do
case $OPTIONS in
h)
echo "usage:"
echo "./scriptname.sh [options]"
echo " "
echo "options:"
echo "-i install it"
echo "-h show help menu"
exit 0
;;
i)
echo "this is function -i"
exit 0
;;
\?)
echo "illegal option"
exit
;;
esac
done
Что происходит, так это то, что он прекрасно работает при передаче -h и -i, однако если набрать -isomething и -hsomethingelse, он все равно вернет параметры, объявленные для h и i, так как, похоже, игнорирует все остальное, набранное после - я и -ч.
По сути, скрипт должен только анализировать -i и -h и возвращать «недопустимый параметр» для всего остального, даже если параметр начинается с -i или -h, пример -hospital.
Я попытался разделить две буквы в то время как getopts с:, однако таким образом, -i или -h будет работать, в зависимости от того, как: расположены.
Пример
while getopts "h:i:" OPTIONS
do
Спасибо