在Linux shell中写脚本时经常会用到数值运算,诚然shell 脚本处理大规模运算是不现实的,但一些小的简单的计算免不了。
笔者近日做一些计算要处理数十个目录中的文件,一个一个用cd 命令打开既繁琐又容易出错,于是就想到写个shell脚本批处理文件,机智的笔者事先给每个目录按照我的计算参数进行了编号,结合for循环语句,只要每一循环中目录编号加1就可以,可以很轻松的处理一系列的目录。
然而,笔者参考的资料主要是鸟哥的Linux私房菜,鸟哥主要介绍了bash,而笔者的计算系统默认是csh,用bash shell出现了一系列问题,感谢论坛里某位大神一语惊醒梦中人。废话不多说。
在bash(其他shell不清楚,本人菜鸟,只接触过bash和csh)中我们可以利用declare定义变量类型来进行简单的数值运算:
declare -i var=$var1*$var2
当然也可以利用下式实现:
var=$( ($var1*$var2) )
然而 这两种方式在我的机器上都没报非法,
例如我脚本中存在这样的语句
set eindex=10
eindex=((${eindex}+1) )
运行之后显示
Illegal variable name.
改为declare结果一样。
后来看到某位大神发了个csh的一个脚本示例,于是本人改成了
@ eindex=${eindex} + 1
完美!!
总结:
在csh中,做数值运算的语法如下
var=$var1+ $var2