рекурсивный скрипт не работает

Sus declaraciones anidadas ifse ven bien en su mayoría, sus pruebas son probablemente lo que está causando que su secuencia de comandos "no funcione".

Cambié sus tests al comando de prueba extendida bash [[.

Además, en lugar de usar dos ifcondicionales anidados, creo que debería funcionar bien como uno soloifelif.

#!/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 $1y 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 testincorporado:

$ 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 ifsea 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
-4
01.06.2016, 23:38
2 ответа

Я наконец-то нашел проблему в том, что grep с переключателем -r игнорирует stdin и ищет в текущей рабочей директории. Чтобы заставить stdin читать, я просто добавил -:

filecat "$ARG" | grep $GREP_ARGS - | sed "s#^#$ARG: #"
0
28.01.2020, 05:20

Попробуйте использовать параметр -H для grep :

  -H, --with-filename 
Распечатайте имя файла для каждого совпадения. 
 

Поэтому вместо вызова вашего скрипта просто выполните:

grep -H PATTERN [FILE...]

Кроме того, неплохо проверить страницу руководства для инструмента, который вы используете перед тем, как вы попытаетесь написать сценарий оболочки. Для обычного инструмента Unix простые параметры, которые вам нужны, почти всегда уже встроены в инструмент.

0
28.01.2020, 05:20

Теги

Похожие вопросы