<<<はどういう意味ですか? [コピー]

<<<はどういう意味ですか? [コピー]

<<< どういう意味ですか?例は次のとおりです。

$ sed 's/a/b/g' <<< "aaa"
bbb

より多くのLinuxコマンドに適用される汎用コマンドですか?

sedプログラムに文字列を供給しているように見えますが、aaa通常この目的のために<<または<を使用しませんか?

ベストアンサー1

他の人は基本的な質問に答えました:それは何ですか? (答え:これここにある文字列.)

なぜ動作するのか見てみましょう。

次のように、コマンドの標準入力に文字列を入力することもできます。

echo "$string" | command

しかし、Bashでパイプを導入するとは、個々のコマンドがサブシェルで実行されることを意味します。考えてみてください:

echo "hello world" | read first second
echo $second $first

2 番目の echo コマンドの出力は、空白を 1 つだけ印刷します。と?私の変数はどうなりましたか?読み取りコマンドはパイプ内にあるため、サブシェルで実行されます。標準入力から2つの単語を正しく読み、それを変数に割り当てます。ただし、コマンドが完了した後サブシェルの終了そして変数が失われます。

時には中括弧を使用してこの問題を解決することができます。

echo "hello world" | {
    read first second
    echo $second $first
}

必要な値が含まれているが、スクリプトの現在のシェルで変数がまだ使用できない場合は問題ありません。

この混乱した状況を解決するには、ここで文字列を使用してください。

read first second <<< "hello world"
echo $second $first

ああ、はるかに良いです!

おすすめ記事