2013-04-16 51 views
11

我得到这个错误在Ubuntu中重定向器“<<<”?

Syntax error: redirection unexpected

在该行:

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

我如何在Ubuntu上运行呢?

+2

是不是重定向单个左尖括号? < –

+0

代码从左到右。过了一段时间,但如果我记得正确的话,就是用'>>“$ RESULT”'重定向它。 – 2013-04-16 19:15:35

+1

你想用这个命令实现什么? '$ RESULT'的价值是什么? –

回答

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

是Bash特定的东西。如果您使用的是不同的Bourne-Compaatable外壳,请尝试:

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

解决了,谢谢! – jmginer

+0

谢谢@Hal这也解决了我的问题。 –

2

它为我在Ubuntu上,如果我完成你IF块:

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

<<<做什么?这对我来说可能是新事物。 –

+3

它重定向[here-strings](http://linux.die.net/abs-guide/x15683.html)。 –

+0

http://stackoverflow.com/questions/2462317/bash-syntax-error-redirection-unexpected – jmginer

21

<<<是bash的特定重定向操作。 documentation将其称为“Here String”,即"Here Document"的变体。

3.6.7 Here Strings

A variant of here documents, the format is:

<<< word

The word is expanded and supplied to the command on its standard input.

一个简单的例子:

$ cat <<< hello 
hello 

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

如果您尝试与/bin/sh使用它,它可能假定<<是指“在这里的文档”,然后看到后意外<,导致“语法错误:重定向意外”的消息,你是看到。

zsh和ksh也支持这种语法。

+0

ksh支持它。破折号不。 –

+0

准确地说它是'cat <(echo“hello”)''的简写形式吗? (我只是想要加深我的理解) –

+1

@ Sridhar-Sarnobat:不完全。 'cat <<< hello'调用没有参数的'cat',stdin从包含'hello'的临时文件重定向到一个换行符。 'cat <(echo hello)'用一个参数调用'cat',它是一个可以从中读取相同数据的伪文件的名称。 'cat'的行为类似,没有参数,标准输入重定向与用单个参数命名要读取的文件,但其他命令的行为可能不同。例如,在我的系统上,'ls -l/proc/self/fd/0 <<< hello'列出临时文件的符号链接,'echo <(echo hello)'打印'/ dev/fd/63'。 –

相关问题