Bash-скрипт выводит «Команду не найдено» в пустых строках - PullRequest
95 голосов
/ 09 сентября 2011

Каждый раз, когда я запускаю скрипт, используя bash scriptname.sh из командной строки в Debian, я получаю Command Not found и затем результат скрипта.

Сценарий работает, но всегда есть Command Not Foundвыписка выводится на экран для каждой пустой строки.Каждая пустая строка приводит к тому, что команда не найдена.

Я запускаю скрипт из папки /var.

Вот скрипт:

#!/bin/bash

echo Hello World

Iзапустите его, набрав следующее:

bash testscript.sh

Почему это произойдет?

Ответы [ 16 ]

3 голосов
/ 19 января 2017

Была такая же проблема. К сожалению

dos2unix winfile.sh
bash: dos2unix: command not found

, поэтому я сделал это для конвертации.

 awk '{ sub("\r$", ""); print }' winfile.sh > unixfile.sh

, а затем

bash unixfile.sh
2 голосов
/ 01 мая 2017

Проблемы с запущенными сценариями также могут быть связаны с неправильным форматированием многострочных команд, например, если после переноса строки "\" у вас есть символ пробела. Например. это:

./run_me.sh \ 
--with-some parameter

(обратите внимание, что дополнительный пробел после "\") вызовет проблемы, но когда вы удалите этот пробел, он будет работать отлично.

0 голосов
/ 10 июля 2018

Возможно, вы захотите обновить файлы .bashrc и .bash_profile псевдонимами, чтобы распознавать вводимую вами команду.

.bashrc и .bash_profile - это скрытые файлы, которые, вероятно, находятся на диске C :, на котором вы сохраняете программные файлы.

0 голосов
/ 25 декабря 2017

Я столкнулся с этим сегодня, рассеянно копируя командную строку доллара $ (перед командной строкой) в сценарий.

0 голосов
/ 13 ноября 2017

Добавьте текущий каталог (.) В PATH, чтобы иметь возможность выполнять скрипт, просто введя его имя, которое находится в текущем каталоге:

PATH=.:$PATH
0 голосов
/ 20 сентября 2015

У меня также были некоторые из Cannot execute command.Все выглядело правильно, но на самом деле у меня было неразрывное пространство   прямо перед моей командой, которое, разумеется, было невозможно разглядеть невооруженным глазом:

if [[ "true" ]]; then
   highlight --syntax js "var i = 0;"
fi

Который в Vim выглядел так:

if [[ "true" ]]; then
  highlight --syntax js "var i = 0;"
fi

Только после запуска проверки сценариев Bash shellcheck я обнаружил проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...