シェルスクリプト(Linux / Ubuntu、Bash)で、なぜechoコマンドとbcコマンドを一緒に使用するのですか?私はシェルスクリプトを初めて使用し、パイプの基本を理解しています。私はbcが一種の別の言語であることを知っています。次のステートメントは実際にどのように機能しますか(単なる例)?
echo 5+6 | bc
5 に答える
最初のコマンド(echo
)は、式「5+6」を標準出力に書き込みます。bc
次に、これはの標準入力にパイプされ、そこから読み取られ、評価されます。
bc
式を直接入力として受け取らず、常にファイルや標準入力から読み取るため、これが使用されます。
そのプログラムの組み合わせを別の強力な操作のセットに使用できます。たとえば、次のように16進数から2進数に変換できます。
echo "ibase=16; obase=2; A15" | bc
印刷されます:101000010101
エコーして|
演算子を使用するプロセスについては、echo
コマンドの出力をbc
プログラムの入力にするだけです。たとえば、次のように使用して同じことを実現できます。bc <<< "5 + 2"
bc
コマンドライン引数から操作を読み取るのではなく、入力ファイルまたは対話型セッションから操作を読み取ります
この便利な組み合わせのもう1つの例は、次のような非常に大きな量の計算です。
echo "2^1024" | bc
に関する注意<<<
:プログラムがファイルから入力を読み取る場合、コマンドへの入力ファイルとして1行の文字列を渡します。<<<
この場合、文字列を「ファイル」に変換してから、この「ファイル」をに渡すことができます。プログラム。
ここでは echo は不要であり、here ドキュメントに置き換えることができます。
bc <<%
5+6
%
または最新のシェルの場合:
bc <<< 5+6
bcコマンドの前に、非常に単純な PIPE を確認できます。
|
名前パイプは非常に正確です!通常のパイプと同様に、このパイプはソースからターゲットに水を移送しています。コンピューター サイエンスでは、水のことをデータまたは情報と呼びます。
すべての優れたパイプと同様に、両方のエンディングが特別です。これらのエンディングを通じて、パイプを他のパイプ、タップ、ジョイントなどに接続できます。
このパイプの一方の端は、一致する端を持つbcに接続されています。Bcは大きなソフトウェアなので、パイプごとにさまざまな接続ポイントがあります。また、この単純な| パイプ。
一方、5+6はソフトウェアではありません。純粋なデータ/水です。固定接続なしでパイプの一方の端に純水を接続するとどうなるか想像できます。水圧不足…
そのパイプに適切に接続できるソフトウェアが必要です。Echoは非常に単純なアプリケーションであり、まともな Echo がすべきことのように実質的に何もしません... しかし、その単純なパイプに一致する基本的で機能的な終わりがあります。