Minha intuição sobre os comandos que permitem especificar um diretório de trabalho é que ele é o primeiro parâmetro. Que você tenha correto, embora você possa perder a opção de comando -i
.
Em segundo lugar, quaisquer opções com vários valores (como os vários subdiretórios específicos em que você deseja pesquisar) devem ser as últimas. Dessa forma, eles não interferem muito com os outros.
Eu proporia chamar seu comando assim:
~$ mycommand /my/root/dir "txt" -sdirs sub1 sub2 sub6
Bash e talvez sh
também tem o shift
builtin, que permite alternar entre os argumentos fornecidos. Você pode extrair as informações necessárias da linha de comando da seguinte forma:
#!/bin/bash
WORK_DIR="$1"
shift # shifts $2 to $1
FILE_END="$1"
shift
if [ "-sdirs" = "$1" ]; then
shift # get to the sub dirs
while [ -n "$1" ]; do # tests if there is a sub dir
# *do your magic here*
# $1 should be a sub dir
# $WORK_DIR/$1/*$FILE_END for example
# to the next one, break if nothing left
shift || break
done
else
echo "No sub directories specified"
exit 1
fi
Isso é o que eu faria do topo da minha cabeça. Mais tratamento de erros é apropriado e deixado como um exercício para o leitor.