Во-первых, опубликованный скрипт отлично работает в моей системе.
Я набираю nano test.sh, копирую его в файл, меняю первую строку на #!/usr/bin/octave -qf
.
Я нажимаю Ctrl-O и Ctrl-X.
Затем я делаю сценарий исполняемым с помощью chmod + x test.sh.
Затем я запускаю сценарий с помощью ./test.sh или octave -qf test.sh, и он работает как положено.
Примечания: Октава в моей системе
$ which octave
/usr/bin/octave
$ file /usr/bin/octave
/usr/bin/octave: symbolic link to `octave-3.6.1'
$file /usr/bin/octave-3.6.1
/usr/bin/octave-3.6.1: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x061b0a703928fc22af5ca93ee78346a7f5a0e481, stripped
А в моей системе /usr/bin
и /usr/local/bin
находятся в $PATH
Единственный способ, которым я могу генерироватьошибка, о которой вы упоминаете, заключается в изменении первой строки скрипта на #!/usr/bin/octave - -
или #!/usr/bin/octave -q -f
.
Это дает
$ ./test.sh
/usr/bin/octave: invalid option -- ' '
Это означает, что в сценарии на вашем компьютере строка Шебанга неверна или интерпретируется неправильно.
Убедитесь, что первая строка в скрипте верна.
Также определите, что произойдет, если строка будет изменена на #!/usr/local/bin/octave -q
или #!/usr/local/bin/octave -f
.
Для получения дополнительной информации о разборе строки shebang см .: