一、说明性语句
- 以#号开始到结束,不被解释执行。
- 文本第一行:#!/bin/sh ------------ 告诉os用哪种类型的shell来解释执行该程序。
二、常用功能性语句
- 任意的shell命令、用户程序或其它的shell程序。
1、常用功能性语句(read命令)
- read var --------- 把读入的数据全部赋给var
- read var1 var2 var3 ------------ 把读入行中的第一个单词(word)赋给var1,第二个单词(word)赋给var2,......... 把其余所有的词赋给最好一个变量。
- 如果执行read语句时标准输入无数据,则程序在此停留等候,知道数据的到来或被终止运行。
#!/bin/bash 时 echo -n 换行 ------------- #!/bin/sh 时 echo "houg : \c"换行。
2、expr命令
- 算术运算命令expr主要用于进行简单的整数操作,包括加(+)、减(-)、乘(*)、整除(/)和求模(%)等操作。
例如:expr 12 + 5 \* 3 ------------ 27
expr 3 - 8 / 2 ------------ 1 -------------------- 算术符号两端要加 空格
num=9 ------------------ 变量赋值不要空格
sum=`expr $num \* 6` ------------------- 整体赋值需要置换符(esc下面的·)
echo $sum ---------------------- 调用变量要用$
54
三、结构性语句
- 条件测试语句、多路分支语句、循环语句、循环控制语句等。
1、条件测试语句
- test 语句可测试三种对象
字符串 整数 文件属性
- 每种测试对象都有若干测试操作符
- 例如:
test "$answer" = "yes" ------ 变量answer的值是否为字符串yes
test $num -eq 18 ------ 变量num的值是否为整数
test -d tmp ------ 测试tmp是否为一个目录名
2、字符串测试
- s1 = s2 测试两个字符串的内容是否一致
- s1 != s2 测试两个字符串的内容是否有差异一致
- -z s1 测试s1字符串的长度是否为0
- -n s1 测试s1字符串的长度是否不为0
3、整数测试
- a -eq b 测试a 与b 是否相等
- a -ne b 测试a 与b 是否不相等
- a -gt b 测试a 是否大于b
- a -ge b 测试a 是否大于等于b
- a -lt b 测试a 是否小于b
- a -le b 测试a 是否小于等于b
#!/bin/bash
A="ZHOU"
B="BIFE"
echo $A=$B
echo $?
echo ls file
echo $?
echo pwd
echo $?
输出 : 1(字符串A与B相等输出结果0,不相等输出结果1) 且 echo $? :输出上一条判断结果。
4、文件的测试
- -d name :测试name是否为一个目录
- -e name :测试一个文件是否存在
- -f name :测试name是否为普通文件
- -L name :测试name是否为符号链接
- -r name :测试name是否存在且为可读
- -w name :测试name是否存在且为可写
- -x name :测试name是否存在且为可执行
- -s name :测试name是否且其长度不为0
- f1 -nt f2 :测试文件f1是否比文件f2更新
- f1 -ot f2 :测试文件f1是否比文件f2更旧
例如:
#!/bin/bash
echo -d /home/linux/test/shlldmo/file_test.sh
echo $?
输出为 : 1
#!/bin/bash
echo -x /home/linux/test/shlldmo/file_test.sh
echo $?
输出 为 :0