Avi*_*kar 15 bash shell-script
我正在尝试使用 shell 脚本将两个浮点数相加。我试过这个:
#!/bin/bash
if [ $# != 2 ]; then
echo "2 arguments are required "
exit
else
x=$1
y=$2
sum = $x + $y
echo ` sum = $sum | bc `
fi
Run Code Online (Sandbox Code Playgroud)
当我向命令行提供两个参数时,例如:
bash filename.sh 2.4 5
Run Code Online (Sandbox Code Playgroud)
...它给了我一个错误: [ 2 != 2 ] command not found
else
echo -n "sum = "
echo "$1 + $2" | bc
fi
Run Code Online (Sandbox Code Playgroud)
将解决您尚未解决的问题的后半部分。你的第一个问题是个谜。" [
" 是一个内置命令,所以除非你没有向我们展示引号,否则我看不出它[ $# != 2 ]
是如何作为一个单词的。
使用bc
:
#!/bin/bash
n="$@"
bc <<< "${n// /+}"
Run Code Online (Sandbox Code Playgroud)
假设该脚本的名称add
,或为那些喜欢谁容易粘贴代码试试这个workalike外壳功能:add() { n="$@"; bc <<< "${n// /+}"; }
; 函数和脚本都是这样工作的:
add 3.2 5.5
add 3.2 5.5 8.9
add {1..51}.{12..89}
Run Code Online (Sandbox Code Playgroud)
花括号使用bash
大括号扩展来创建大约 4000 个字符串,这些字符串bc
解释为范围从1.12到51.89 的十进制数。
输出:
8.7
17.6
105436.89
Run Code Online (Sandbox Code Playgroud)
请注意如何无需检查两个参数:
它可以添加一个或多个参数,
没有参数不返回任何输出。
它忽略普通字符串,因此add 5 6.7 abc edf 9
返回20.7
.
它返回一个语法错误,如果一个数字是不正确的,如:9z
,5.6.7
,8..
,等。
用它来添加两个浮点数。
echo 12.8 12.2 | awk '{print $1 + $2}'
Result:- 25
只需用您的变量替换数字即可。
您可以使用
awk "BEGIN {print 12.8+12.2; exit}"