Redirector “<<<” in Ubuntu?

2020-02-27 05:05发布

问题:

I'm getting this error

Syntax error: redirection unexpected

in the line:

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

How I can run this in Ubuntu?

回答1:

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

is a Bash-specific thing. If you are using a different bourne-compatable shell, try:

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


回答2:

<<< is a bash-specific redirection operator (so it's not specific to Ubuntu). The documentation refers to it as a "Here String", a variant of the "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.

A simple example:

$ cat <<< hello
hello

If you're getting an error, it's likely that you're executing the command using a shell other than bash. If you have #!/bin/sh at the top of your script, try changing it to #!/bin/bash.

If you try to use it with /bin/sh, it probably assumes the << refers to a "here document", and then sees an unexpected < after that, resulting in the "Syntax error: redirection unexpected" message that you're seeing.

zsh and ksh also support this syntax.



回答3:

It works for me on Ubuntu, if I complete you IF block:

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