22

我收到此错误

语法错误:重定向意外

在行中:

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

我如何在 Ubuntu 中运行它?

4

3 回答 3

33

<<<是特定于 bash 的重定向运算符(因此它不是特定于 Ubuntu)。文档将其称为“Here String”,是“Here Document”的变体。

3.6.7 这里的字符串

这里文档的一种变体,格式为:

<<< 字

该词扩展并提供给其标准输入上的命令。

一个简单的例子:

$ cat <<< hello
hello

如果遇到错误,很可能是您使用 bash 以外的 shell 执行命令。如果您#!/bin/sh的脚本顶部有,请尝试将其更改为#!/bin/bash.

如果您尝试将它与 一起使用/bin/sh,它可能会假定<<引用“此处的文档”,然后在此之后看到意外<,从而导致您看到“语法错误:重定向意外”消息。

zsh 和 ksh 也支持这种语法。

于 2013-04-16T19:34:18.323 回答
23
if grep -q "^127.0.0." <<< "$RESULT"
then
    echo IF-THEN
fi

是特定于 Bash 的东西。如果您使用不同的 bourne 兼容 shell,请尝试:

if echo "$RESULT" | grep -q "^127.0.0."
then
    echo IF-THEN
fi
于 2013-04-16T19:41:30.653 回答
2

如果我完成你的 IF 块,它在 Ubuntu 上对我有用:

if grep -q "^127.0.0." <<< "$RESULT"; then echo ""; fi
于 2013-04-16T19:16:13.400 回答