Se você quiser procurar o regexp que é a concatenação dos argumentos com caracteres de espaço no meio, isso seria:
#! /bin/sh -
IFS=' ' # used for "$*"
grep -r --color=always -e "$*" . | nolong
"$*"
une os parâmetros posicionais com o primeiro caractere (na verdade byte exceto com yash
) de $IFS
.
Note (como você parece estar confuso com o significado de espaço) que, se você executar:
myscript hello world
myscript hello world
myscript 'hello' "world"
Os espaços (ou aspas) não são passados para myscript
, eles são apenas parte da sintaxe de linha de comando do shell. Nessas 3 linhas de comando do shell, myscript
recebe os mesmos 3 argumentos: "myscript", "hello" e "world".
Se você quiser procurar por qualquer um dos regexps passados como argumentos:
#! /bin/sh -
for i do
set -- "$@" -e "$i"
shift
done
[ "$#" -gt 0 ] && grep -r --color=always "$@" . | nolong