web-dev-qa-db-ja.com

Ubuntuのリダイレクタ "<<<"?

このエラーが発生します

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

行で:

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

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

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

bash固有のものです。別のボーン互換シェルを使用している場合は、次を試してください。

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

<<<はbash固有のリダイレクト演算子です(したがって、Ubuntuに固有ではありません)。 documentation は、それを "Here String"、 "Here Document" の変形と呼びます。

3.6.7ヒア文字列

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

<<<ワード

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

簡単な例:

$ cat <<< hello
hello

エラーが発生した場合は、bash以外のシェルを使用してコマンドを実行している可能性があります。スクリプトの先頭に#!/bin/shがある場合は、それを#!/bin/bashに変更してみてください。

/bin/shと一緒に使用しようとすると、おそらく<<が「ヒアドキュメント」を参照していると想定し、その後に予期しない<が表示され、「構文エラー:表示されている「予期しないリダイレクト」メッセージ。

zshとkshもこの構文をサポートしています。

26
Keith Thompson

私があなたにIFブロックを完了するならば、それはUbuntuで私のために働きます:

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