предположим, у меня есть такой скрипт: (назовем его test.sh)
#!/bin/sh
function php() {
printf "The rhost is ${RHOST} and the lport is ${LPORT}"
}
while getopts "hr:l:s:" arg; do
case $arg in
h)
printf "Usage\n"
;;
r)
RHOST=$OPTARG
;;
l)
LPORT=$OPTARG
;;
s)
SHELL=$OPTARG
if [[ "$SHELL" == "php" ]] || [[ "$SHELL" == "PHP" ]] ; then
php
fi
;;
esac
done
Если я запускаю свой скрипт как "test.sh -r 10 -l 4 -s php"
Мой скрипт будет работать так, как я хочу ...
Однако, если я запустлю его как «test.sh -s php -r 10 -l 4»
Переменные rhost и lport никогда не попадают в функцию php. Я понимаю, что это потому, что его называют первым. Однако мой вопрос заключается в том, как мне написать сценарий, чтобы независимо от порядка выполнения аргументов я все еще мог использовать rhost и lport в качестве переменных?
Я также пытался поиграть со смещением, но думаю, что это не ответ, или я помещаю команду смещения в неправильное место.