🐉

比武招亲:招式拆解

🐉

第十九回:韦小宝算账分赃,武林大会比高低

👱

师父,刚才抄了鳌拜的家,得了 100 万两,我要分一半给弟兄们,这账怎么算?还有,我要跟郑克塽比武,怎么判断我比他厉害?

👳

小宝,这叫运算。算钱用算术运算符,比武用关系运算符。不过 Shell 这家伙数学不太好,算加减乘除得用外挂(expr)。

🧮 算术运算 (分赃)

Shell 原生不支持数学运算(很笨吧?),必须借助 expr 命令或者 $(( ))

📜 运算口诀

  • 加法val=`expr 2 + 2` (注意:加号两边必须有空格!反引号 ` 是键盘左上角那个)
  • 乘法val=`expr 2 \* 2` (乘号前要加反斜杠,不然系统以为是通配符)
  • 更强的心法echo $((2 + 2)) (推荐!双括号里不用转义,随便写)

⚖️ 关系运算 (比武)

专门用来比数字大小。注意:只能比数字,不能比字符串!

用法:if [ $a -gt $b ] (注意:方括号里面两边都要有空格!)

🤝 布尔运算 (结盟)

用来组合多个条件。

🧵 字符串运算 (对暗号)

用来比对文字。

🖐️ 动手时刻:韦小宝的赌场

编写脚本 gamble.sh,计算输赢。

  1. 编写脚本:
    #!/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
                        
  2. 运行: bash gamble.sh

💡 提示:Shell 脚本里最容易报错的就是空格![ ] 里面、运算符两边,统统都要留空格!