Shell变量与算术运算
区分两个 Shell
Shell 语言与 Shell 解释器
Shell 语言
写 Shell 脚本使用的是 Shell 语言,Shell 既是一种命令语言,又是一种程序设计语言。
- 作为命令语言,它交互式地解释和执行用户输入的命令
- 作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制
Shell 脚本解释器
解析Shell 使用的是 Shell 脚本解释器,一个用 C 语言编写的程序,它是用户使用 Unix/Linux 的桥梁,接口程序。常见的脚本解释器有 bash、sh、csh、ksh......
Shell 的变量
学习 Shell 变量的时候,对变量的定义和使用有一丝迷惑,看下面这个程序。
运行结果
1+2 xiaoming
看到这个运行结果,我感到出乎意料,首先 c 经验不等于3,d 表示字符串不加引号竟然不报错!!!!!!不知到 Linux 课上有没有讲过,可惜我没有那一门课,百度......
Shell 的所有变量默认都是字符型。
所以 a、b、c 直接被当做字符串啦,那变量 a、b 如何进行算术运算呢? 查看 菜鸟教程。
使用 expr 命令,例如 c=`expr $a+$b` 可以得到正常的结果。同时还有其他方式可以进行求值。 具体参考 Linux Shell脚本攻略:shell中各种括号()、(())、[]、[[]]、{}的作用
使用 $[] 方式 c=$[$a+$b],类比 [] 不加前面的$,表示进行(算数比较、字符串 ==|!= 的比较、使用数组索引)。
使用 $(())方式 c=(($a+$b)) 只要括号中的运算符、表达式符合C语言运算规则,都可用在$((exp))中,甚至是三目运算符。
思考:当两个字符串使用 算数运算的时候会得到什么结果呢?
参考链接