У меня был скрипт, который работал нормально, но когда я запустил его сегодня, он говорит declare: not found. Я использую оболочку bash и путь в начале скрипта.
В моем скрипте две строки с флагом:
declare -a RESPONSE
RESPONSE=($RESULT)
В нем также говорится, что ( но я думаю, что это происходит из-за первой ошибки.
declare | grep USER показывает
USER=ashfame
USERNAME=ashfame
values="$SVN_BASH_USERNAME";
Итак, что здесь не так?
Используете ли вы sh вместо bash? sh (связанный с dash) не поддерживает ключевое слово declare, а также синтаксис
VAR=(list)
для инициализации массивов.
Используете ли вы sh вместо bash? sh (связанный с dash) не поддерживает ключевое слово declare, а также синтаксис
VAR=(list)
для инициализации массивов.
Используете ли вы sh вместо bash? sh (связанный с dash) не поддерживает ключевое слово declare, а также синтаксис
VAR=(list)
для инициализации массивов.
Используете ли вы sh вместо bash? sh (связанный с dash) не поддерживает ключевое слово declare, а также синтаксис
VAR=(list)
для инициализации массивов.
Используете ли вы sh
вместо bash
? sh
(связанный с тире
) не поддерживает объявить ключевое слово
или синтаксис
VAR = (список )
для инициализации массивов.
Используете ли вы sh
вместо bash
? sh
(связанный с тире
) не поддерживает объявить ключевое слово
или синтаксис
VAR = (список )
для инициализации массивов.
Используете ли вы sh
вместо bash
? sh
(связанный с тире
) не поддерживает объявить ключевое слово
или синтаксис
VAR = (список )
для инициализации массивов.
Используете ли вы sh
вместо bash
? sh
(связанный с тире
) не поддерживает объявить ключевое слово
или синтаксис
VAR = (список )
для инициализации массивов.
#! / Bin / bash
. Вы имели в виду, как я это выполняю? Я просто попытался выполнить его как ./ script.sh
, и он сработал. Но это не работает как script.sh
или sh script.sh
, и я почти уверен, что использовал только последние два метода, в то время как я создал его неделю тому назад. Что это может объяснить?
– Ashfame
27 February 2011 в 20:22
У меня была такая же проблема, и тогда я вспомнил, что вам нужно назначить правильные разрешения для запуска сценария оболочки.
Изменить разрешение скрипта, например:
chmod 755 script.sh
Я использую Ubuntu 14.04 64 бит. Поместите этот код в файл:
#!/bin/sh
declare -i FOOBAR=12;
echo $FOOBAR;
Запустите его так:
el@apollo:~$ ./06.sh
./test.sh: 2: ./test.sh: declare: not found
Чтобы исправить это, сделайте следующее:
#!/bin/bash
declare -i FOOBAR=12;
echo $FOOBAR;
Печать:
el@apollo:~$ ./06.sh
12
Я подозреваю, что ваша строка «shebang» (необязательная первая строка файла) ссылается на sh вместо bash. Это должно быть
#!/bin/bash
для сценариев bash. Если первая строка вашего скрипта -
#!/bin/sh
, это указывает на то, что должна использоваться строго совместимая с борнером оболочка; в случае Ubuntu используется dash. Во многих других дистрибутивах это не вызывает проблемы, поскольку они связывают /bin/sh с /bin/bash; однако ubuntu ссылается на /bin/dash, чтобы позволить сценариям системы работать быстрее.
Встроенный declare является одним из многих расширений bash для спецификации сценария оболочки Bourne; dash просто реализует эту спецификацию без расширений.
Попробуйте запустить скрипт, используя /bin/bash в командной строке, если sh (:
Вместо:
sh script.shПопробуйте:
/bin/bash script.shУ меня была такая же проблема, и тогда я вспомнил, что вам нужно назначить правильные разрешения для запуска сценария оболочки.
Изменить разрешение скрипта, например:
chmod 755 script.sh
Я использую Ubuntu 14.04 64 бит. Поместите этот код в файл:
#!/bin/sh
declare -i FOOBAR=12;
echo $FOOBAR;
Запустите его так:
el@apollo:~$ ./06.sh
./test.sh: 2: ./test.sh: declare: not found
Чтобы исправить это, сделайте следующее:
#!/bin/bash
declare -i FOOBAR=12;
echo $FOOBAR;
Печать:
el@apollo:~$ ./06.sh
12
Я подозреваю, что ваша строка «shebang» (необязательная первая строка файла) ссылается на sh вместо bash. Это должно быть
#!/bin/bash
для сценариев bash. Если первая строка вашего скрипта -
#!/bin/sh
, это указывает на то, что должна использоваться строго совместимая с борнером оболочка; в случае Ubuntu используется dash. Во многих других дистрибутивах это не вызывает проблемы, поскольку они связывают /bin/sh с /bin/bash; однако ubuntu ссылается на /bin/dash, чтобы позволить сценариям системы работать быстрее.
Встроенный declare является одним из многих расширений bash для спецификации сценария оболочки Bourne; dash просто реализует эту спецификацию без расширений.
Попробуйте запустить скрипт, используя /bin/bash в командной строке, если sh (:
Вместо:
sh script.shПопробуйте:
/bin/bash script.shУ меня была такая же проблема, и тогда я вспомнил, что вам нужно назначить правильные разрешения для запуска сценария оболочки.
Изменить разрешение скрипта, например:
chmod 755 script.sh
Я использую Ubuntu 14.04 64 бит. Поместите этот код в файл:
#!/bin/sh
declare -i FOOBAR=12;
echo $FOOBAR;
Запустите его так:
el@apollo:~$ ./06.sh
./test.sh: 2: ./test.sh: declare: not found
Чтобы исправить это, сделайте следующее:
#!/bin/bash
declare -i FOOBAR=12;
echo $FOOBAR;
Печать:
el@apollo:~$ ./06.sh
12
Я подозреваю, что ваша строка «shebang» (необязательная первая строка файла) ссылается на sh вместо bash. Это должно быть
#!/bin/bash
для сценариев bash. Если первая строка вашего скрипта -
#!/bin/sh
, это указывает на то, что должна использоваться строго совместимая с борнером оболочка; в случае Ubuntu используется dash. Во многих других дистрибутивах это не вызывает проблемы, поскольку они связывают /bin/sh с /bin/bash; однако ubuntu ссылается на /bin/dash, чтобы позволить сценариям системы работать быстрее.
Встроенный declare является одним из многих расширений bash для спецификации сценария оболочки Bourne; dash просто реализует эту спецификацию без расширений.
Попробуйте запустить скрипт, используя /bin/bash в командной строке, если sh (:
Вместо:
sh script.shПопробуйте:
/bin/bash script.shУ меня была такая же проблема, и тогда я вспомнил, что вам нужно назначить правильные разрешения для запуска сценария оболочки.
Изменить разрешение скрипта, например:
chmod 755 script.sh
Я использую Ubuntu 14.04 64 бит. Поместите этот код в файл:
#!/bin/sh
declare -i FOOBAR=12;
echo $FOOBAR;
Запустите его так:
el@apollo:~$ ./06.sh
./test.sh: 2: ./test.sh: declare: not found
Чтобы исправить это, сделайте следующее:
#!/bin/bash
declare -i FOOBAR=12;
echo $FOOBAR;
Печать:
el@apollo:~$ ./06.sh
12
Я подозреваю, что ваша строка «shebang» (необязательная первая строка файла) ссылается на sh вместо bash. Это должно быть
#!/bin/bash
для сценариев bash. Если первая строка вашего скрипта -
#!/bin/sh
, это указывает на то, что должна использоваться строго совместимая с борнером оболочка; в случае Ubuntu используется dash. Во многих других дистрибутивах это не вызывает проблемы, поскольку они связывают /bin/sh с /bin/bash; однако ubuntu ссылается на /bin/dash, чтобы позволить сценариям системы работать быстрее.
Встроенный declare является одним из многих расширений bash для спецификации сценария оболочки Bourne; dash просто реализует эту спецификацию без расширений.
Попробуйте запустить скрипт, используя /bin/bash в командной строке, если sh (:
Вместо:
sh script.shПопробуйте:
/bin/bash script.sh Попробуйте запустить скрипт, используя / bin / bash
вместо командной строки, если sh
(:
Вместо:
] sh script.sh
Попробуйте:
/ bin / bash script.sh
Я подозреваю, что ваша строка «shebang» (необязательная первая строка файла) ссылается на sh
вместо bash
. Это должно быть
#! / Bin / bash
для сценариев bash. Если первая строка вашего скрипта -
#! / Bin / sh
, то это указывает на то, что должна использоваться строго борнская совместимая оболочка ; в случае Ubuntu используется тире
. Во многих других дистрибутивах это не вызывает проблемы, поскольку они связывают / bin / sh
с / bin / bash
; однако ubuntu ссылается на / bin / dash
, чтобы позволить системным скриптам работать быстрее.
declare
builtin является одним из bash
- множество расширений к спецификации сценария оболочки Bourne; dash
просто реализует эту спецификацию без расширений.
Я использую Ubuntu 14.04 64 бит. Поместите этот код в файл:
#! / Bin / sh declare -i FOOBAR = 12; echo $ FOOBAR;
Запустите его так:
el @ apollo: ~ $ ./06.sh ./test.sh: 2: ./test.sh : declare: not found
Чтобы исправить это, сделайте это вместо:
#! / bin / bash declare -i FOOBAR = 12; echo $ FOOBAR;
Отпечатки:
el @ apollo: ~ $ ./06.sh 12
У меня была такая же проблема, и тогда я вспомнил, что вам нужно назначить правильные разрешения для запуска сценария оболочки.
Изменить разрешение скрипта, например:
chmod 755 script.sh
Попробуйте запустить скрипт, используя / bin / bash
вместо командной строки, если sh
(:
Вместо:
] sh script.sh
Попробуйте:
/ bin / bash script.sh
Я подозреваю, что ваша строка «shebang» (необязательная первая строка файла) ссылается на sh
вместо bash
. Это должно быть
#! / Bin / bash
для сценариев bash. Если первая строка вашего скрипта -
#! / Bin / sh
, то это указывает на то, что должна использоваться строго борнская совместимая оболочка ; в случае Ubuntu используется тире
. Во многих других дистрибутивах это не вызывает проблемы, поскольку они связывают / bin / sh
с / bin / bash
; однако ubuntu ссылается на / bin / dash
, чтобы позволить системным скриптам работать быстрее.
declare
builtin является одним из bash
- множество расширений к спецификации сценария оболочки Bourne; dash
просто реализует эту спецификацию без расширений.