Трябва да напиша макрос, който получава малко аргументи към него. например ./macro.sh -wrongone -f име на файл -wrongone. Трябва да хвана грешните и да ги изброя и да направя необходимата операция върху валидните. Ето моят код:
for i in "${ArrayOfParameters[@]}"
do
tmp=$[tmp+1]
case "${i}" in
"-h" | "--help")
help
;;
"-f")
a="${ArrayOfParameters[i+1]}"
echo $a
i=$[i+1]
;;
*)
echo -e "${red}Parameter ${i} is wrong!${NC}"
;;
esac
done
Проблемът ми е, че не знам как да направя 'filename' да бъде пропуснато по подразбиране на превключвателя :(. Всеки път, когато получа грешка, че името на файла е грешен параметър. Мислех си да пропусна една итерация. Нещо подобно в C++ .
for(int i=0;i<5;i++)
if(i==3)
i=4;
Бих искал да получа нещо подобно в Bash, но нямам идея как да го направя. Опитах
for (( i=0; i<=5; i++ ))
a="${ArrayOfParameters[i]}"
но ми връщаше всички времеви числа, а не низовете. Ще съм много благодарна за полезни отговори.