Altere o grep
no caso -i
para pesquisar $2
, pois $1
contém a opção que você acabou de testar, não a sequência de pesquisa.
find $HOME -type f -name "*.tex" -exec grep -il "$2" {} + | vim -
Para lidar com várias opções, seria melhor que a declaração case
apenas definisse uma variável, por exemplo
-i | --ignore-case)
[ $# -ne 2 ] && echo "1 argumenst i needed" && exit 1
case_option=-i
;;
Em seguida, o comando find
após o loop seria semelhante:
find $HOME -type f -name "*.tex" -exec grep -l $case_option "$1" {} + | vim -
Nesse caso, ele pode usar $1
porque o shift
moveu a string de pesquisa para o começo dos argumentos.
Assim, todo o script se parece com:
while (( "$#" )); do
case "$1" in
-h | --help)
echo "help menu"
exit 0
;;
-i | --ignore-case)
[ $# -ne 2 ] && echo "1 argumenst i needed" && exit 1
case_option=-i
;;
-*)
echo "Error: Unknown option: $1" >&2
exit 1
;;
*) # No more options
break
;;
esac
shift # not sure if needed
done
find $HOME -type f -name "*.tex" -exec grep -l $case_option "$1" {} + | vim -