问题描述
我收到这个错误
Syntax error: redirection unexpected
在行中:
if grep -q "^127.0.0." <<< "$RESULT"
我如何在Ubuntu中运行它?
最佳思路
if grep -q "^127.0.0." <<< "$RESULT"
then
echo IF-THEN
fi
是Bash-specific东西。如果您使用其他bourne-compatable Shell,请尝试:
if echo "$RESULT" | grep -q "^127.0.0."
then
echo IF-THEN
fi
次佳思路
<<<
是bash-specific重定向运算符(因此它并不特定于Ubuntu)。 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
一起使用,则可能假定<<
引用了”here document”,然后看到意外的<
,这之后,您将看到“语法错误:意外重定向”消息。
zsh和ksh也支持此语法。