Назад | Перейти на главную страницу

Вызов программ в сценарии bash?

Я новичок в bash и, кажется, не могу заставить его скомпилировать код C без раздражающих сообщений. Я уверен, что это точки с запятой, потому что, если я их вообще удалю или изменю, это в значительной степени сломается. Я получаю следующие предупреждения / ошибки: ": not found::" и больше ничего не повторяется для каждой строки. Любая помощь приветствуется.

#!/bin/bash
GCC=/usr/bin/gcc ;
INSERTS="10000 20000 50000 100000 150000 250000 375000 500000 750000 1000000"
CODESRC=./code.c;
#compile with options
$GCC -DDEBUG -o codetest $CODESRC;
#run with parameters
./codetest $INSERTS;

редактировать:

Код компилируется и работает нормально. Если я удалю все точки с запятой и попытаюсь запустить его, используя sh test.sh Получаю следующее.

test.sh: 6: /usr/bin/gcc
: not found
test.sh: 8: ./codetest: not found

редактировать: Ах, глупый я; это была проблема с окончанием строки windows / unix, которая стала очевидной при запуске ./test.sh и получении /bin/bash^M: bad interpreter

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

  • Не могли бы вы подробнее рассказать о получаемых вами ошибках?
  • Компилируется ли код и работает ли он правильно, когда вы пробуете его вне сценария?
  • Как вы запускаете сценарий?

редактировать

  • Как это определенно расположение gcc? Каков результат which gcc
  • Вы запускаете скрипт из того же каталога, что и ваш код?
  • Поскольку ваш сценарий указывает, что он должен запускаться с /bin/bash вы должны запустить его как ./test.shне sh test.sh