条件判断,控制结构:
单分支if语句
if 判断条件;then(then放下一行可省略“,”)
statement1
statement2
...
fi
双分支的if语句
if 判断条件;then
statement1
statement2
...
else
statement4
statement5
...
fi
多分支的if语句
if 判断条件1;then
statement1
...
elif 判断条件2;then
statement2
...
elif 判断条件3;then
statement3
...
else
statement4
...
fi
课堂1:写一个脚本
判断当前系统上是否有用户的默认shell为bash
如果有,就显示有多少个这类用户,否则,就显示没有这类用户
【提示】
1.“引用”一个命令的执行结果,要使用命令引用,比如:RESAULTS=`wc -l /etc/passwd | cut -d: -f1`
2.使用一个命令的执行结果,要直接执行此命令,一定不能引号,比如:if id user1一句话中的id命令就不能加引号
3.如果想把一个命令的执行结果赋值给某些变量,要使用命令引用,比如USERRID=·id -uuser1`
4.如果想把一个命令的执行状态结果保存下来,并作为执行成功与否的判断条件,则需先执行此命令,而后引用其状态结果,如
id -u user1
RETVAL=$?
此句绝不可以写成RESVAL=`id -u user1`
课堂2:写一个脚本
判断当前系统上是否有用户的默认shell为bash
如果有,就显示其中一个的用户名,否则,就显示没有这类用户
课堂3:写一个脚本
判断/etc/inittab中是否有空白行
如果有,则显示其空白行数,否则,显示没有空白行
课堂4:写一个脚本
给定一个用户,判断其UID与GID是否一样
如果一样,就显示此用户为“good guy”;否则,就显示此用户为“bad guy”
(进一步要求:不使用id命令获取其id号)
课堂5:写一个脚本
给定一个用户,获取其密码警告期限
而后判断用户最近一次修改密码时间距今天是否已经小于警告期限
如果小于,则显示“warning”,否则,就显示"OK"
【提示】算术运算的方法$[$A-$B]:表示变量A的值减去变量B的值的结果
圆整:丢弃小数点后的所有内容
课堂6:写一个脚本
判定命令历史中历史命令总条目是否大于1000,如果大于,显示“Some command will gone.”,否则显示“OK”.
(history 只保留最近1000个命令,虽然能看见大于1000个命令)
shell中如何进行算术运算
A=3
B=4
1,let 算术运算表达式
let C=$[$A+$B]
2,$[算术运算表达式]
C=$[$A+$B]
3,$((算术运算表达式))
C=$(($A+$B))
4,expr 算术运算表达式,表达式中各操作数及运算符之间要有空格,而且要使用命令引用
C=`expr $A + $B`
退出脚本:exit(1-255都可)
例如:
exit 8
exit #:
如果脚本没有定义退出状态,那么最后执行的一条命令的退出码即为脚本的退出状态码
测试脚本是否有语法错误: bash -n
单步执行,显示每一步命令执行结果: bash -x
文件测试:[ -e /etc/passwd ]
-e FILE:测试文件是否存在
-f FILE:测试文件是否为普通目录
-d FILE:测试指定路径是否为目录
-r FILE:测试当前用户对指定文件是否有读取权限
-w FILE:测试当前用户对指定文件是否有写权限
-x FILE:测试当前用户对指定文件是否有执行权限
课堂7:写一个脚本
给定一个文件,如果是普通文件,就显示之
如果给定一个目录,亦显示之
否则,此为无法识别的文件
bash变量类型:
环境变量
本地变量
位置变量
特殊变量
本地变量:
VARNAME=VALUE:作用域为整个bash进程
局部变量:
local VARNAME=VALUE:作用域为当前代码段
环境变量:作用域为当前shell进程及其子进程:
export VARNAME=VALUE
VARNAME=VALUE
export VARNAME
"导出"
位置变量:
./filetest.sh /etc/fsttab /etc/inittab
$1: /etc/fsttab
$2: /etc/inittab
……
shift:默认踢去第一个参数(第二个参数变成第一个参数)
shift n :踢掉n个参数
shift 2(第三个参数变成第一个参数)
特殊变量:
$? : 上一个命令的执行状态返回值
程序执行,有两类返回值
程序执行结果
程序转态返回代码(0-255)
0:正确执行
1-255:错误执行 1,2,127系统预留
$#:参数的个数
如果不是大于等于1,就要加参数(提示用户加参数)
课堂8,写一个脚本
给脚本传递两个参数(整数)
显示此两者之和,之积
转载于:https://blog.51cto.com/11170930/1748022