Редиректор "<<<" в Ubuntu?

Я получаю эту ошибку

Синтаксическая ошибка: непредвиденное перенаправление

в строке:

 if grep -q "^127.0.0." <<< "$RESULT"

Как я могу запустить это в Ubuntu?

Ответ 1

if grep -q "^127.0.0." <<< "$RESULT"
then
    echo IF-THEN
fi

- это Bash -специфическая вещь. Если вы используете другую совместимую с bourne оболочку, попробуйте:

if echo "$RESULT" | grep -q "^127.0.0."
then
    echo IF-THEN
fi

Ответ 2

<<< является оператором перенаправления, зависящим от bash (поэтому он не относится к Ubuntu). В документации это называется "Здесь строка", вариант "Здесь документ".

3.6.7 Здесь Строки

Вариант здесь документов, формат:

<<< слово

Слово раскрывается и передается команде на стандартный ввод.

Простой пример:

$ cat <<< hello
hello

Если вы получаете сообщение об ошибке, вполне вероятно, что вы выполняете команду, используя оболочку, отличную от bash. Если у вас есть #!/bin/sh в верхней части вашего скрипта, попробуйте изменить его на #!/bin/bash.

Если вы попытаетесь использовать его с /bin/sh, он, вероятно, предполагает, что << ссылается на "здесь документ", а затем видит неожиданное < после этого, что приводит к сообщению "Ошибка синтаксиса: неожиданное перенаправление", которое вы видя.

zsh и ksh также поддерживают этот синтаксис.

Ответ 3

Это работает для меня на Ubuntu, если я завершу ваш блок IF:

if grep -q "^127.0.0." <<< "$RESULT"; then echo ""; fi