数据类型

类型 示例 备注
字符串 “string” 在shell中大部分数据都属于字符串
数组 (a b c d) 关于shell中数组的详细用法,可参见之前写过的这篇文章
整数 “12” shell会在计算中对字符串隐式转换成数字

运算

在 Shell 脚本中进行运算有几种方法:

使用expr命令

比如:

1
2
3
4
a=1
b=2
sum=$(expr $a + $b)
echo "a + b = $sum"

值得注意的是,由于expr是命令,因此每个变量以及运算符之间需要以空格分割;乘号(*)需要经过转义

使用$((式子))

比如:

1
2
3
4
a=1
b=2
sum=$((a + b))
echo "a + b = $sum"

看起来比expr命令灵活一些,不用担心乘号被bash误解,也不用关心空格。但这种shell只支持整数类型,当计算出现小数时会向下取整。

还有一种$[式子]的语法也是类似的样子,但其已在bash2.0废弃,不推荐使用。

语句

条件分支

关于条件分支的其他细节,可参见这篇文章

1
2
3
4
5
6
7
8
read -rep "请键入一个数字:" x
if [[ $((x%2)) == 1 ]]; then
echo "这个数是奇数"
elif [[ $((x%2)) == 0 ]]; then
echo "这个数是偶数"
else
echo "我不知道"
fi
1
2
3
4
5
6
7
8
9
10
11
12
function http_error() {
case $1 in
400)
echo "错误的请求"
;;
401 | 403 | 404)
echo "无法访问"
*)
echo "网络连接异常"
;;
esac
}

循环

1
2
3
4
5
6
7
8
n=0
sum=0
while [ $n -lt 100 ]; do
sum=$((sum + n))
((n++))
done
echo "$sum"
# 5050