Linux syntax error near unexpected token

Синтаксическая ошибка рядом с неожиданным токеном `(‘

Когда я использую код ниже в терминале 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 с помощью:

Источник

Читайте также:  Virtualbox настройка общих папок linux
Оцените статью