-2

Мой скрипт должен: рекурсивно искать файлы и каталоги, имена которых содержат заданные строки, используя find , начиная с текущего каталога. Если аргументы не заданы, перед возвращением кода ошибки Missing argument(s) в оболочку должно быть напечатано сообщение « 1 .

Это скрипт:

#!/bin/bash/
if ["${#}" -eq 0]
  then
     echo "Missing argument(s)"
     exit 1
else
  find .  -name "*$@*"
fi

Я пытался использовать это в терминале, но я получил эту ошибку: bash: ./myfind: /bin/bash/: bad interpreter : Not a directory

Зачем? Мой код правильный?

2 ответа2

6

Вам необходимо удалить косую черту в конце первой строки. /bin /bash является интерпретатором.

2

Вам также нужен пробел между [ и " и между 0 и ] .

Бонус: вы можете упростить "${#}" до $# - нет необходимости заключать в кавычки переменную, которая всегда будет числом, и нет необходимости использовать фигурные скобки, если у вас не больше одной переменной внутри строки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .