Синтаксическая ошибка рядом с неожиданным токеном `('
Когда я использую код ниже в терминале SSH для CentOS, он работает нормально:
Но если я помещаю тот же строчный код в сценарий оболочки (test.sh) и запускаю сценарий оболочки из терминала, он выдаст ошибку, как это
Как я могу решить эту проблему?
Подстановка процессов не определен POSIX, поэтому не поддерживает все POSIX оболочки, только некоторые оболочки , как bash , zsh , ksh88 , ksh93 поддержка.
В Centos системе /bin/sh есть символическая ссылка на /bin/bash . Когда bash вызывается с именем sh , bash переходит в режим posix ( Bash Startup Files — вызывается с именем sh ). В режиме posix, process substitution не поддерживается, вызывает синтаксическую ошибку.
Скрипт должен работать, если вы звоните bash напрямую bash test.sh . Если нет, возможно bash , перешел в режим posix. Это может произойти, если вы начинаете bash с —posix аргумента или переменная POSIXLY_CORRECT установлена при bash запуске:
Или bash построен с —enable-strict-posix-default опцией.
Здесь вам не нужно подменять процессы, вы можете использовать стандартные каналы оболочки:
— это стандартный способ сказать, paste чтобы прочитать данные из стандартного ввода. В некоторых paste реализациях вы можете опустить его, хотя это не стандартно.
Это было бы полезно при вставке вывода более чем одной команды, например:
На системах, которые поддерживают /dev/fd/n , это можно сделать sh с помощью:
bash: syntax error near unexpected token `('
Why is that error coming and what is the solution for that?
3 Answers 3
You should use single quotes ‘ or double quotes » around the URL in this case (and in general):
From now, you should use this method in general when you use a string which contain parentheses as argument in a command. That is because parentheses are used for grouping by the shell such that they are not communicated in any way to a command. So, the bash shell will give you a syntax error:
Не могу запустить bash скрипт вылетает ошибка — syntax error near unexpected token `
Вылетает ошибка
line 2: syntax error near unexpected token ` <
В чем причина?
- Вопрос задан более трёх лет назад
- 11702 просмотра
Оценить 2 комментария
- Вконтакте
вот классика
8. Функции
Как почти в любом языке программирования, Вы можете использовать функции для группировки кусков кода более логичным способом или для практического применения волшебного искусства рекурсии.
Объявление функции — это всего лишь запись function my_func < my_code >.
Вызов функции осуществляется точно так же, как и вызов других программ, Вы просто пишете её имя.