在shell脚本中将字符串转换为十进制并计算

时间:2017-06-12 11:33:35

标签: linux shell scripting

我是shell脚本新手。我的输入文件如下所示:

ONE=`sed -n '1p' file`;
TWO=`sed -n '2p' file`;
THREE=`sed -n '3p' file`;

我读了这个文件,因为每行都是一个变量。

OPTIONS

现在,我需要对这些变量进行一些计算(如乘法,除法......)。 任何人请指教。

4 个答案:

答案 0 :(得分:1)

bash不支持浮点运算(仅整数运算)。您需要将操作传递给bc等工具。

例如:

DIV=$(echo "scale=3; $ONE/$TWO" | bc)
echo $DIV

MUL=$(echo "scale=3; $ONE/$DIV" | bc)
echo $MUL

答案 1 :(得分:0)

您可以使用bc执行此操作。例如,echo "$ONE + $TWO + $THREE" | bc给出这些数字的总和。

答案 2 :(得分:0)

你可以这样做:

class User < ApplicationRecord
  boolean_scope :verified, :unverified
end

class Message < ApplicationRecord
  boolean_scope :sent, :pending
end

答案 3 :(得分:0)

“ awk”命令是转换并对其进行操作的有用替代方法。

第1步:在代码上方放置带有awk命令的方法。

calc(){ awk "BEGIN { print "$*" }"; }

第2步:在bash上,您可以调用此方法并简单地进行十进制运算。

FOUR=$(calc $ONE*$TWO/$THREE)

注意:如果只想将字符串转换为十进制,则可以尝试以下方法:

DECIMAL_ONE=$(calc $ONE*1)