基本语法
#!/bin/bash
echo "Hello World !"
特殊字符用法
参数 | 说明 |
---|---|
$# |
传递到脚本的参数个数 |
$* |
以一个单字符串显示所有向脚本传递的参数。 |
$$ |
脚本运行的当前进程ID号 |
$! |
后台运行的最后一个进程的ID号 |
$@ |
与$*相同,但是使用时加引号,并在引号中返回每个参数。 |
$- |
显示Shell使用的当前选项,与set命令功能相同。 |
$? |
显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |
运算
基本运算符
符号 | 说明 | 实例 |
---|---|---|
+ |
加法 | expr $a + $b 结果为 30。 |
- |
减法 | expr $a - $b 结果为 -10。 |
* |
乘法 | expr $a \* $b 结果为 200。 |
/ |
除法 | expr $b / $a 结果为 2。 |
% |
取余 | expr $b % $a 结果为 0。 |
= |
赋值 | a=$b 将把变量 b 的值赋给 a。 |
== |
比较两个数字,相同则返回 true。 | [ $a == $b ] 返回 false。 |
!= |
比较两个数字,不相同则返回 true。 | [ $a != $b ] 返回 true。 |
关系运算符
符号 | 说明 | 实例 |
---|---|---|
eq |
检测两个数是否相等,相等返回 true。 | [ $a -eq $b ] |
-ne |
检测两个数是否不相等,不相等返回 true。 | [ $a -ne $b ] |
-gt |
检测左边的数是否大于右边的,如果是,则返回 true。 | [ $a -gt $b ] |
-lt |
检测左边的数是否小于右边的,如果是,则返回 true。 | [ $a -lt $b ] |
-ge |
检测左边的数是否大于等于右边的,如果是,则返回 true。 | [ $a -ge $b ] |
-le |
检测左边的数是否小于等于右边的,如果是,则返回 true。 | [ $a -le $b ] |
布尔运算符
符号 | 说明 | 实例 |
---|---|---|
! |
非运算, true 返回 false,false 返回 true。 | [ ! false ] |
-o |
或运算,有 true 则返回 true。 | [ $a -lt 20 -o $b -gt 100 ] |
-a |
与运算,都为 true 才返回 true。 | [ $a -lt 20 -a $b -gt 100 ] |
逻辑运算符
符号 | 说明 | 实例 |
---|---|---|
&& |
逻辑的 and | [[ $a -lt 100 && $b -gt 100 ]] |
` | ` |
字符串运算符
符号 | 说明 | 实例 |
---|---|---|
= |
检测两个字符串是否相等,相等返回 true。 | [ $a = $b ] |
!= |
检测两个字符串是否相等,不相等返回 true。 | [ $a != $b ] |
-z |
检测字符串长度是否为0,为0返回 true。 | [ -z $a ] |
-n |
检测字符串长度是否不为 0,不为 0 返回 true。 | [ -n "$a" ] |
$ |
检测字符串是否为空,不为空返回 true。 | [ $a ] |
执行脚本
chmod +x visdot.sh
#为脚本设置可执行权限
./visdot.sh
#执行脚本
变量
变量命名规则
A="XXX"
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 中间不能有空格,可以使用下划线(_)。
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)。
基本用法
使用定义过的变量需在变量名前加 $
符号,在需要区分变量名时,可在变量名外添加花括号。
A="XXX"
echo $A
echo ${A}
只读变量
readonly A #将变量 A 转化为只读变量
删除变量
unset A #将变量 A 删除
Shell 字符串
Shell 数据类型主要包括「字符串」和「数字」,字符串外可用单引号或双引号,也可不用引号。
单引号字符串的限制:
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
- 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
双引号的优点:
- 双引号里可以有变量
- 双引号里可以出现转义字符
获取字符串长度
A="xxxx"
echo ${#A} #输出 4
提取子字符串
从字符串 A 第 2 个字符截取至第 3 个字符。
A="abcdef"
echo ${A:1:3}
# 输出 bcd
脚本语言索引值都是从 0 开始的。
查找子字符串
在字符串 A 中查找字符 d 或 f 的位置,哪个字母先出现就计算哪个。
A="abcdef"
echo `expr index "$A" df`
# 输出 4
Shell 数组
用括号来表示数组,各元素用「空格」隔开。
GA=(a b c d ... n)
GA=(
a
b
c
)
GA[0]=a
GA[1]=b
GA[2]=c
读取数组
A=${GA[1]}
# 将数组 GA 中第 2 个值赋给变量 A。
echo ${GA[@]}
# 将数组 GA 中全部值输出。