标签: bc

Bash编程(Cygwin):非法字符^ M.

我的角色有问题.我认为这是dos和unix之间的转换问题.

我有一个浮点值的变量.当我使用echo命令打印它时,我得到:

0.495959
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用bc命令对该值进行操作时(我不确定如何编写bc命令).

echo $mean *1000 |bc
Run Code Online (Sandbox Code Playgroud)

我明白了:

(standard_in) 1 : illegal character: ^M
Run Code Online (Sandbox Code Playgroud)

我已经在我的.sh文件中使用了dos2unix命令.我想这是因为我的变量有^ M字符(不用echo命令打印)

我怎样才能消除这个错误?

windows bash cygwin bc

5
推荐指数
1
解决办法
9682
查看次数

如何比较shell脚本中的两个浮点值

我不得不在shell脚本中进行划分,最好的方法是:

result1=`echo "scale=3; ($var1 / $total) * 100"| bc -l`
result2=`echo "scale=3; ($var2 / $total) * 100"| bc -l`
Run Code Online (Sandbox Code Playgroud)

但我想比较的价值$result1$result2

使用if test $result1 -lt $result2if [ $result1 -gt $result2 ]不工作:(

知道怎么做吗?

linux shell comparison bc conditional-statements

4
推荐指数
1
解决办法
1万
查看次数

bc及其ibase/obase选项:

我发现我偶然发现了一个奇怪的错误:

我尝试将"512"作为基数6读取,并将其输出为基数16:

echo "ibase=6;obase=16;512" | bc
161
Run Code Online (Sandbox Code Playgroud)

如您所见,输出为161,但它应该是bc(原文如此!).我尝试使用基数10:

echo "ibase=6;obase=10;512" | bc
512
Run Code Online (Sandbox Code Playgroud)

该值保持不变.好奇!默认obase是10.如果我省略它:

echo "ibase=6;512" | bc
188
Run Code Online (Sandbox Code Playgroud)

好吧,这似乎是正确的.在两步过程中,它有效:

echo "obase=16;"$(echo "ibase=6;512" | bc) | bc
BC
Run Code Online (Sandbox Code Playgroud)

所以我为不同的基础制作了一个剧本,但它让我感到困惑:

for ib in {6,8,10,16}; do echo $ib; for ob in {10,16}; do echo -en $ib $ob"     \t => " ; echo "ibase=$ib;obase=$ob;333" | bc ; done; done; 
6
6 10         => 333
6 16         => 108
8
8 10         => 333
8 16         => 119
10
10 10        => …
Run Code Online (Sandbox Code Playgroud)

base bc

4
推荐指数
2
解决办法
2万
查看次数

bash命令用于汇总和打印列的每个元素并打印新列

我应该使用哪个命令来汇总两个特定列的值?例如,我有文件:

1 4 5 1
2 3 5 2
7 8 6 3
Run Code Online (Sandbox Code Playgroud)

我想总结第二列和最后一列,以得到以下结果

1 4 5 1 5
2 3 5 2 5
7 8 6 3 11
Run Code Online (Sandbox Code Playgroud)

我用awk和bc吗?我找到了很多例子来总结整个专栏......

bash awk sed bc

4
推荐指数
1
解决办法
515
查看次数

在Bash中使用带有bc的负指数

bc在Bash 程序中使用负指数时遇到了困难.如果我执行echo "2*1.86929*10^05" | bc,我会得到一个结果,373858.00000如果我执行echo "2*1.86929*10^-05" | bc,我只得到一个结果0.使用负指数时如何获得更好的准确度?

bash exponent bc

4
推荐指数
1
解决办法
2342
查看次数

在 bash 脚本中使用 bc

我正在尝试在 bash 中使用 bc 以浮点形式输出结果。但是我得到以下代码的以下输出。我如何从这里获得乘法结果以及为什么我找不到命令。

 #!/bin/bash 
 v1=3.41 
 v2=45 
 v3= $(bc <<< "scale=4;$v1 + $v2")
 echo $v3 
 v3= $(bc <<< "scale=4;$v1 - $v2") 
 echo $v3 
 v3= $(bc <<< "scale=4;$v1 / $v2") 
 echo $v3 
 v3= $(bc <<< "scale=4;$v1 % $v2") 
 echo $v3
 v3 = $(bc <<< "scale=4;$v1 * $v2") 
 echo $v3 
Run Code Online (Sandbox Code Playgroud)

我得到的输出如下:

mint@mint ~ $ bash bc.sh 
bc.sh: line 4: 48.41: command not found

bc.sh: line 6: -41.59: command not found

bc.sh: line 8: .0757: command not found

bc.sh: line 10: .0035: …
Run Code Online (Sandbox Code Playgroud)

bash bc

4
推荐指数
1
解决办法
2509
查看次数

与bc bash的力量的力量

我想计算一下:

0x0404cb * 2**(8*(0x1b - 3))
Run Code Online (Sandbox Code Playgroud)

以十进制表示的是:

263371*2^^(8*(27-3))
Run Code Online (Sandbox Code Playgroud)

使用| bc.

我试过了

echo 263371*2^^(8*(27-3)) | bc
expr 263371*2^^(8*(27-3)) | bc
zsh: no matches found: 263371*2^^(8*(27-3))
Run Code Online (Sandbox Code Playgroud)

或尝试解决此问题

238348 * 2^176^
Run Code Online (Sandbox Code Playgroud)

我可以一次解决吗?

math bash bc

4
推荐指数
1
解决办法
76
查看次数

将带符号的10位二进制数转换为十进制?

我有10位带符号的二进制数.我知道两种shell/bash方法将它们转换为小数但是无法识别签名.

1111101010应转换为-22而不是1002.

echo "ibase=2;obase=A;1111101010"| bc
Run Code Online (Sandbox Code Playgroud)

不起作用.以下都不是.

echo "$((2#1111101010))"
Run Code Online (Sandbox Code Playgroud)

我能做什么?

编辑:给出错误的预期结果; 错:-220,右:-22.

bash shell bc

3
推荐指数
1
解决办法
1074
查看次数

如何在bash if语句中使用bc?

我正在尝试使用 bc 将 if 语句中的值与小数进行比较。我不确定我是否在我的程序中正确使用了 bc,if statement因为它似乎不起作用。它总是输入第四个if statementIF4”。其他条件似乎没有被正确读取?

 #SET INITIAL SPEED
initialspeed() {

wpm=0
echo wpm: $wpm
#CHECKS IF SPEED WAS GIVEN
if [ -z "$wpm" ]
then
        let wpm=0.6
        echo IF1 wpm: $wpm #DEBUG
#CHECK IF SPEED IS VALID
elif [ 'echo "if$($wpm > 0.6)1;if$($wpm<=0.6)0" | bc' = 1 ]
then
        echo IF2 wpm: $wpm #DEBUG
        echo Error speed is less than 100 wpm
        exit 3
elif [ 'echo "if$($wpm < 0.06)1;if$($wpm<=0.06)0" | …
Run Code Online (Sandbox Code Playgroud)

bash if-statement bc

3
推荐指数
1
解决办法
8765
查看次数

将stdout传递给Perl时,如何让它打印换行符?

我刚刚发现将stdout传输到Perl中,我很惊讶你甚至可以这样做:

[user@folder] $ echo print 1/3 | perl
0.33333[user@folder] $
Run Code Online (Sandbox Code Playgroud)

根据我的理解,你将print命令放入Perl,并使用Perl的代码进行浮点计算.请指正.但是,每次我这样做,我都会得到一个没有换行符的答案.我到处搜索,我只是不能将这些术语的关键字足以创建答案.

这是我正在谈论的内容的链接,在海报旁边 Thor: 我如何在bash中使用浮点除法?

他给出了一个惊人的答案,但我无法评论或给用户发消息,所以我决定在这里创建一个新问题.

我仍然试图围绕这是如何工作,变量.

$ three=3
$ echo $three/3 | perl
1[user@folder] $
Run Code Online (Sandbox Code Playgroud)

奖金问题:
它起初就像我试图让bash在算术运算中输出浮点数.我不明白为什么bc不能返回浮动.据说它可以,但它对我不起作用.

理想的情况是:

$ echo 1/3 | bc
0
$
Run Code Online (Sandbox Code Playgroud)

应该返回.333而不是0.我正在委托一个工具bc,并且bc应该能够做浮动.我只是不明白发生了什么.

bash terminal perl pipeline bc

3
推荐指数
1
解决办法
514
查看次数