Я только что начал использовать UNIX и возникли проблемы с попыткой реализовать getopts.UNIX basic getopts problem
Функция ниже находит файл, а затем удаляет его в корзину, поэтому я пытаюсь использовать 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
Я бы очень не хотел использовать 'getopts' в функции. После цикла 'getopts' вам понадобится' shift $ (($ OPTIND - 1)) 'для удаления опций, обработанных' getopts'. Затем вам нужно проверить, что осталось «$ 1» (и что должна делать ваша функция, если есть также «$ 2»), если у вас есть 'для файла в« $ @ »цикл вокруг' if' или вы должны проверить и отклонить дополнительные аргументы? Было бы более обнадеживающим, если бы вы опубликовали полную функцию, в вашем коде отсутствует хотя бы '}', и кто знает, что еще. Рекомендуется использовать двойные кавычки вокруг аргументов имени файла защищать от пробелов. –