Я в общем наворотил такой ад:
for val in $@
do
loopIndex=$[loopIndex+1]
if [ ! ${val:0:1} = "-" ]; then
result=${args[$loopIndex]}
arguments+=$result
else
echo "не соответствие"
fi
done
Это я пытаюсь получить все аргументы скрипта, но при вызове в таком виде ./bedi.sh -r header footer
у меня echo $arguments выводит headerfooter слитно, словно это строка, хотя в самом начале я объявляю переменную arguments=()
В закрамах нашел такой вариант разбора аргументов и параметров
#!/bin/bash
showopts () {
while getopts ":pq:" optname
do
case "$optname" in
"p")
echo "Option $optname is specified"
;;
"q")
echo "Option $optname has value $OPTARG"
;;
"?")
echo "Unknown option $OPTARG"
;;
":")
echo "No argument value for option $OPTARG"
;;
*)
# Should not occur
echo "Unknown error while processing options"
;;
esac
done
return $OPTIND
}
showargs () {
for p in "$@"
do
echo "[$p]"
done
}
optinfo=$(showopts "$@")
argstart=$?
arginfo=$(showargs "${@:$argstart}")
echo "Arguments are:"
echo "$arginfo"
echo "Options are:"
echo "$optinfo"
Но он явно делает не массивы, а мне нужны массивы(