UNIX основные проблемы с getopts

Я только недавно начал использовать UNIX и у меня возникли проблемы при попытке реализовать getopts.

Функция ниже находит файл, а затем удаляет его в корзину, но я пытаюсь использовать getopts с -i, который будет отображать сообщение после его перемещения. Синтаксис работает нормально, но когда я реализую цикл while с помощью команды getotps, он больше не работает.

Кто-нибудь может дать мне какой-нибудь полезный совет, он был бы очень признателен

function moveToBin(){

while getopts i opt
do
   case $opt in
   i) echo "file removed!" ;;
esac
done

if [[ -e $1 ]]; then
   inode=$(ls -i  $i | cut -d " " -f1)
   name=$1_$inode
   pathOfFile=$(pwd $1)
   restoreEntry=$1_$inode:$pathOfFile/$1

        mv $1 ~/deleted
        mv ~/deleted/$1 ~/deleted/$name
            echo "Before extension code"
               extension=$(find ~ -inum $inode)
 fi

1 ответ

while getopts ...; do
  ...
done

getopts проанализирует параметры и их возможные аргументы. Он прекратит синтаксический анализ первого неопционального аргумента (строка, которая не начинается с дефиса (-) это не аргумент для любого варианта перед ним). Он также прекратит синтаксический анализ, когда увидит -- (двойной дефис), что означает конец опций.

Другие вопросы по тегам