if I omit one of the parameter it spools a lot of un-matching files.
Depois de omitir, você recebe uma expressão como ||
, que está vazia, então tudo corresponde. Você precisa verificar a entrada e construir sua expressão corretamente.
Se as strings também puderem conter caracteres especiais, talvez você prefira a opção --fixed-strings
do grep.
Não testado:
isdn=""
echo "Enter string: "
while read string
do
[ ${#string} -eq 0 ] && break # blank line cancels
isdn="$isdn$string"$'\n'
done
echo "You entered: "
echo ----
echo -n "$isdn"
echo ----
# your ssh user@host "zgrep -F '$isdn' ..." here
# or maybe this would allow ' in filenames too:
# echo -n "$isdn" | ssh user@host zgrep -F -f - ...