Я хотел бы обновить скрипт, который в настоящее время выглядит следующим образом:
$ example.sh a b
Вот код внутри example.sh
for var in "$@"
do
$var
done
Где он принимает аргументы, и эти аргументы зацикливаются и выполняются (при условии, что эти аргументы существуют).
Я хотел бы обновить скрипт, чтобы эти flags
были скриптами/функциями и чтобы все последующее применялось в качестве аргумента функции.
$ example.sh --a 1 2 3 --b 4 5 6
Я хотел бы перебрать все флаги и запустить эквивалент.
a 1 2 3
b 1 2 3
Я просмотрел getopts
, но я не уверен, позволит ли он мне выполнять и передавать аргументы так, как я хотел бы.
Что я пробовал:
while getopts ":a:b:c:d:" opt; do
case "$opt" in
a) i=$OPTARG ;;
b) j=$OPTARG ;;
c) k=$OPTARG ;;
d) l=$OPTARG ;;
esac
done
echo $i
echo $j
for file in "$@"; do
echo $file
done
Я нашел следующий скрипт, который с учетом example --a 1 2 3 --b 4 5 6
будет назначать только первый элемент, используя OPTARG
, и он не работает должным образом. Я не уверен, как применять аргументы к функции в этом формате.