22

このエラーが発生しています

構文エラー: 予期しないリダイレクト

行で:

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

これをUbuntuで実行するにはどうすればよいですか?

4

3 に答える 3

33

<<<は bash 固有のリダイレクト オペレーターです (したがって、Ubuntu 固有ではありません)。ドキュメントでは、これを"Here Document"の変形である "Here String" と呼んでいます。

3.6.7 ヒア文字列

ヒアドキュメントの変形で、形式は次のとおりです。

<<< ワード

単語は展開され、標準入力でコマンドに提供されます。

簡単な例:

$ cat <<< hello
hello

エラーが発生する場合は、bash 以外のシェルを使用してコマンドを実行している可能性があります。#!/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 互換シェルを使用している場合は、次を試してください。

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 に答える