Я пытаюсь запустить очень простой скрипт на нескольких разных платформах:
#!/bin/bash
STRING="this is a test"
echo $STRING
, и я не могу сказать, почему на Маверикс и Йосемити я получаю вывод:
./starter.sh line 2: is": command not found
во время онлайн-симулятора терминала Bash (извините, у меня нет удобной настройки Linux, поэтому я использую: этот ) выполняет код, как и ожидалось. В соответствии с Собственные учебники Apple для начинающих это должно работать. IOW, двойные кавычки просто игнорируются.
Несколько моментов:
- между именем переменной, оператором равенства и присвоенным значением нет пробелов;
- Выход из пробелов не является правильным ответом в моем случае, так как конечная цель состоит в том, чтобы сделать несколько более сложных сценариев ... но, очевидно, я должен сначала пройти этот небольшой этап.
:set list
,Ответы:
Сообщение об ошибке не совсем верно, но оно очень похоже на то, что вы получите, если в скрипте будут двойные кавычки (или «умные») вместо простых (ASCII) двойных кавычек. Оболочка не понимает причудливых кавычек, поэтому сценарий будет вести себя очень странным образом. Попробуйте распечатать ваш скрипт с:
Это покажет любые странные (не обычные ASCII или непечатные) символы в файле. Если он печатает что-то вроде:
... биты "? M - ^ @ M - ^ \" и "? M - ^ @ M- ^]" представляют собой необычные кавычки в кодировке UTF-8. С другой стороны, если строки файла заканчиваются на «^ M $» вместо просто «$», то Sleafar прав, и у вас есть файл в формате DOS / Windows.
источник
Проверьте, что используется в качестве «конца строки» в вашем файле. Различные системы используют разные управляющие символы:
LF
CR+LF
CR
Вы не можете использовать один и тот же скрипт на всех системах без его конвертации.
источник