Se o que você quer é testar a existência e a localização de um argumento específico, tudo o que você precisa fazer é analisar a linha de comando e testar cada argumento para uma correspondência com o valor "esperado". Portanto, você precisa testar cada argumento para o valor -noenter e, em seguida, imprimir uma linha informando a posição e o nome da variável -noenter :
for i in 'seq 1 $#'; do
ref='eval "echo \$$i"'
if [ $ref == '-noenter' ]; then echo "arg $i is $ref"; break; fi
done
Agora, a mesma coisa, somente a posição do argumento -noenter é armazenada em $mitsos e a posição do argumento antes disso em $mary :
for i in 'seq 1 $#'; do
ref='eval "echo \${$i}"'
if [ $ref == '-noenter' ]; then
mitsos=$i
eva=$(($i-1))
mary='eval "echo \${$eva}"'
break
fi
done
e agora $mitsos tem a posição de -noenter ou nenhum valor e $mary o valor do argumento anterior a -noenter . Neste ponto, se $mary tiver o valor /dir você sabe , o próximo argumento será -noenter e você poderá continuar com a implementação de find , caso contrário, use a versão ou impressão do sistema uma mensagem de erro. Finalmente, se você não se importa com a posição de -noenter , você pode omitir a linha mitsos=$i .