Sus declaraciones anidadas if
se ven bien en su mayoría, sus pruebas son probablemente lo que está causando que su secuencia de comandos "no funcione".
Cambié sus test
s al comando de prueba extendida bash [[
.
Además, en lugar de usar dos if
condicionales anidados, creo que debería funcionar bien como uno soloif
elif
.
#!/bin/bash
if [[ -z "$1" ]]
then
echo "Wrong usage of command, to check proper wars user -h for help."
exit
else
if [[ "$1" == "-h" ]]
then
echo -e "OPTIONS: -h (help), -a (access point MAC), -c (current target[s] MAC[s])\n"
exit
elif [[ "$1" == "-c" ]]
then
echo "Usage error, access point MAC comes first."
exit
fi
fi
Sus pruebas deben tener un espacio entre $1
y su cadena de prueba, pero creo que es mejor usar la prueba bash [[
si va a escribir su script en bash. Estos son algunos ejemplos de cómo funciona el test
incorporado:
$ test true && echo yes || echo no
yes
$ test false && echo yes || echo no
yes
$ test true=false && echo yes || echo no
yes
$ test true = false && echo yes || echo no
no
Además, en este caso, no creo que su condicional anidado if
sea necesario en absoluto. Podrías simplificarlo a:
#!/bin/bash
if [[ "$1" == "-h" ]]; then
echo -e "OPTIONS: -h (help), -a (access point MAC), -c (current target[s] MAC[s])\n"
exit
elif [[ "$1" == "-c" ]]; then
echo "Usage error, access point MAC comes first."
exit
else
echo "Wrong usage of command, to check proper wars user -h for help."
exit
fi
Я наконец-то нашел проблему в том, что grep
с переключателем -r
игнорирует stdin и ищет в текущей рабочей директории.
Чтобы заставить stdin читать, я просто добавил -
:
filecat "$ARG" | grep $GREP_ARGS - | sed "s#^#$ARG: #"
Попробуйте использовать параметр -H
для grep
:
-H, --with-filename Распечатайте имя файла для каждого совпадения.
Поэтому вместо вызова вашего скрипта просто выполните:
grep -H PATTERN [FILE...]
Кроме того, неплохо проверить страницу руководства для инструмента, который вы используете перед тем, как вы попытаетесь написать сценарий оболочки. Для обычного инструмента Unix простые параметры, которые вам нужны, почти всегда уже встроены в инструмент.