👱
师父,刚才抄了鳌拜的家,得了 100 万两,我要分一半给弟兄们,这账怎么算?还有,我要跟郑克塽比武,怎么判断我比他厉害?
👳
小宝,这叫运算。算钱用算术运算符,比武用关系运算符。不过 Shell 这家伙数学不太好,算加减乘除得用外挂(expr)。
🧮 算术运算 (分赃)
Shell 原生不支持数学运算(很笨吧?),必须借助 expr 命令或者 $(( ))。
📜 运算口诀
- 加法:
val=`expr 2 + 2`(注意:加号两边必须有空格!反引号 ` 是键盘左上角那个) - 乘法:
val=`expr 2 \* 2`(乘号前要加反斜杠,不然系统以为是通配符) - 更强的心法:
echo $((2 + 2))(推荐!双括号里不用转义,随便写)
⚖️ 关系运算 (比武)
专门用来比数字大小。注意:只能比数字,不能比字符串!
- -eq (equal):相等吗?(平手)
- -ne (not equal):不相等吗?
- -gt (greater than):大于吗?(我赢了)
- -lt (less than):小于吗?(我输了)
- -ge (greater equal):大于等于。
- -le (less equal):小于等于。
用法:if [ $a -gt $b ] (注意:方括号里面两边都要有空格!)
🤝 布尔运算 (结盟)
用来组合多个条件。
- ! (非):唱反调。真变假,假变真。
- -o (or):或。只要有一个是真的就行。
- -a (and):与。必须两个都是真的才行。
🧵 字符串运算 (对暗号)
用来比对文字。
- =:暗号对上了吗?
- !=:暗号不对吗?
- -z:是空的吗?(Zero length)
- -n:不是空的吗?(Non-zero)
🖐️ 动手时刻:韦小宝的赌场
编写脚本 gamble.sh,计算输赢。
- 编写脚本:
#!/bin/bash a=100 b=50 echo "我有 $a 两,你有 $b 两。" # 算总钱数 total=$((a + b)) echo "咱们一共 $total 两。" # 比大小 if [ $a -gt $b ] then echo "哈哈,我比你有钱!" else echo "不可能,你居然比我有钱?" fi # 对暗号 code="天王盖地虎" if [ "$code" = "天王盖地虎" ] then echo "宝塔镇河妖!自己人!" fi - 运行:
bash gamble.sh
💡 提示:Shell 脚本里最容易报错的就是空格![ ] 里面、运算符两边,统统都要留空格!