我正在尝试在 shell 脚本中进行浮点运算。我了解到awk
可以在命令行上完成此操作,但它的工作方式似乎并没有延续到 shell 脚本中。当我awk
在下面输入时,它会变成灰色,好像是说 bash 无法识别它。当我运行它时$ ./script a 30 40
,我得到 0。我做错了什么?
#!/bin/bash
if [ $1 = a ]
then
echo | awk '{print $2 + $3}'
答案1
#!/bin/bash
if [ $1 = a ]
then
echo "$@" | awk '{print $2 + $3}'
fi
$2 和 $3 与脚本的 $1 无关,但在 awk 中。
答案2
如果您始终信任传递给它的参数,请考虑这一点:
$ cat script
awk 'BEGIN{ print '"$*"' }'
$ ./script 30 + 40
70
$ ./script 30 \* 40
1200
$ ./script 30 / 40
0.75
请注意需要转义*
,因为它是一个全局字符,否则引用参数,例如:
$ ./script '30 * 40'
1200
此外,通过这种方法,您不仅限于简单的算术表达式:
$ ./script 'log(10)'
2.30259
$ ./script 'exp(10)'
22026.5
$ ./script '10^2 - sqrt(9)'
97