重定向器“<<<<在Ubuntu?

时间:2013-04-16 19:10:11

标签: bash ubuntu dash-shell

我收到此错误

  

语法错误:重定向意外

在该行:

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

我如何在Ubuntu中运行它?

3 个答案:

答案 0 :(得分:26)

<<<是一个特定于bash的重定向运算符(因此它并不特定于Ubuntu)。 documentation将其称为&#34; Here String&#34;,"Here Document"的变体。

  

3.6.7此处字符串

     

此处文件的变体,格式为:

     

&LT;&LT;&LT;字

     

扩展并将其提供给命令   标准输入。

一个简单的例子:

$ cat <<< hello
hello

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

如果您尝试将其与/bin/sh一起使用,则可能假定<<引用了&#34;此处的文档&#34;,然后在此之后看到意外的< ,导致&#34;语法错误:重定向意外&#34;你正在看的消息。

zsh和ksh也支持这种语法。

答案 1 :(得分:21)

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

答案 2 :(得分:2)

如果我完成了IF阻止,它对我在Ubuntu上有用:

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