На этот вопрос уже есть ответ здесь:
У меня есть скрипт из книги Data Science at Command Line, Jeroen Janssens вот такой
curl -s http://www.gutenberg.org/cache/epub/76/pg76.txt |
tr '[:upper:]' '[:lower:]' | grep -oE '\w+' | sort |
uniq -c | sort -nr | head -n 10
и сохранил его как top-world-1. sh
В терминале Ubuntu 15.10 64bit я ввел команду ./top-words-1.sh
и получил результат вроде
./top-words-1.sh: line 1: $'\r': command not found
./top-words-1.sh: line 2: $'\r': command not found
Сразу догадался, что это из-за многострочности и удалил '\n' места, чтобы получилось предложение вроде этого
curl -s http://www.gutenberg.org/cache/epub/76/pg76.txt |tr '[:upper:]' '[:lower:]' | grep -oE '\w+' | sort |uniq -c | sort -nr | head -n 10
Но получил
: invalid number of lines
Я совсем новичок в программировании bash скриптов. Не могли бы вы дать мне какие-нибудь советы? Заранее спасибо
Следуя комментариям ниже, я:
#!/bin/bash
в начало файла и получил результат bash: ./top-words-1.sh: /bin/bash^M: плохой интерпретатор: No such file or directory
Я использовал dos2unix
команда для решения моей проблемы. Благодарите @muru за свой комментарий. Причина объяснена @steeldriver
Это действительно работает на меня. Попробуйте:
cat > script.sh <<EOF
#! /bin/bash
curl -s http://www.gutenberg.org/cache/epub/76/pg76.txt |tr '[:upper:]' '[:lower:]' | grep -oE '\w+' | sort |uniq -c | sort -nr | head -n 10
EOF
chmod +x script.sh
./script.sh
И это дает мне правильный ответ. Удостоверьтесь, что Вы не добавляете дополнительных (скрытых) символов к файлу. Вы можете также скопировать/вставить команда в оболочку, чтобы удостовериться, что она работает на Вас.
любое выполнение Ваш сценарий с командой: bash ./scriptname
, или chmod +x script
тогда: ./scriptname
команда, не найденная, вероятно, означает не исполняемый файл.