1

在 Shell 脚本(Linux/Ubuntu、Bash)中,为什么我们同时使用 echo 和 bc 命令?我是 Shell 脚本的新手,对管道有基本的了解。我知道 bc 是一种单独的语言。以下语句实际上是如何工作的(只是一个例子)?
echo 5+6 | bc

4

5 回答 5

4

第一个命令 ( echo) 将表达式“5+6”写入其标准输出。然后将其通过管道传输到bc的标准输入,从那里读取并进行评估。

之所以使用它,是因为bc它不将表达式作为直接输入,它总是从文件和/或标准输入中读取。

于 2012-11-07T14:55:11.080 回答
3

您可以将该程序组合用于另一组强大的操作,例如您可以像这样从十六进制转换为二进制

echo "ibase=16; obase=2; A15" | bc

它将打印:101000010101

至于回显和使用|运算符的过程,它只是将echo命令的输出作为bc程序的输入,您可以使用例如:bc <<< "5 + 2"

bc不从命令行参数读取操作,而是从输入文件或交互式会话中读取操作

这种有用组合的另一个例子是计算非常大的数量,例如:

echo "2^1024" | bc

关于的注释<<<它将单行上的字符串作为输入文件传递给命令,如果程序从文件中读取其输入,<<<您可以将字符串转换为“文件”,然后将此“文件”传递给该程序。

于 2012-11-07T14:57:28.467 回答
3

echo 这里不需要,可以用这里的文档代替:

bc <<%
5+6
%

或使用现代贝壳:

bc <<< 5+6
于 2012-11-08T00:23:38.403 回答
0

bc命令之前,我们可以看到非常简单的 PIPE:

|

管道名称非常准确!就像一根普通的管道一样,这条管道将水从源头传输到目标。在计算机科学中,水被称为数据信息

就像每根好烟斗一样,它的两端都很特别。通过这些末端,我们可以将管道连接到其他管道、水龙头、接头等。

该管道的一个末端连接到具有匹配末端的bc 。Bc是一个很大的软件,所以它对于不同的管道有很多不同的连接点。也为了这个简单| 管道。

另一方面,5+6不是任何软件。它是纯数据/水。你可以想象如果你在没有固定连接的情况下将纯净水注入管道的一端会发生什么!水压不足...

我们需要一些与该管道有良好连接的软件。Echo是一个非常简单的应用程序,几乎什么都不做,就像体面的 echo 应该做的那样......但它具有与那个简单管道匹配的基本和功能性结尾。

于 2012-11-07T18:02:16.097 回答
0

一些文本格式

  echo -n "pi=" ; bc -l <<< "scale=10; 4*a(1)"

π=3.1415926532

于 2019-02-14T13:49:20.303 回答