Shell语言
1.shell脚本规范以.sh结尾
2.运行
3.赋予权限,查询shell的执行过程
输出时间的
输出日历
输出一年的日历
修改语言
计算机
read –t 3 –p “1111111111” # -t 3是超越时间,即等待3秒钟,如果不输入东西,则会自动退出。在shell脚本中,如果用户不输入东西,系统不自动退出,则也是一个bug。
打印输出2行
简单的shell脚本
Shell内设了用于接收参数的变量,变量之间可以使用空格间隔。例如$0对应的是当前shell脚本程序的名称,$#对应的是总共有几个参数,$*对应的是所有位置的参数值,$?对应的是显示上一次命令的执行返回值,而$1、$2、$3…….则分别对应着第N个位置的参数值
验证下:
按照测试对象来划分,条件测试句可以分为4种:
文件测试语句
逻辑测试语句
整数值比较语句
字符串比较语句
文件测试即使用条件来判断文件是否存在或权限是否满足等情况的运算符
-d 测试文件是否为目录类型
-e 测试文件是否存在
-f 判断是否为一般文件
-r 测试当前用户是否有权限读取
-w 测试当前用户是否有权限写入
-x 测试当前用户是否有权限执行
验证:
如果返回值为0,则目录存在;如果返回值为非零的值,则意味着目录不存在:
[root@localhost ~]#[ -f /etc/fstab]
[root@localhost ~]#echo $?
0
Shell终端中逻辑”与”的运算符号是&&,命令执行成功后才会执行它后面的命令。
逻辑”或”,它在Linux系统中的运算符号为||,命令执行失败后才会执行它后面的命令。
可用的整数比较运算符
-eq 是否等于
-ne 是否不等于
-gt 是否大于
-lt 是否小于
-le 是否等于或小于
-ge 是否大于或等于
If 条件测试语句
If条件语句的单分支结构由if、then、fi关键词组成,而且只在条件成立后才执行预设的命令,相当于口语的”如果……..那么………”。单分支的if语句属于最简单的一种条件判断结构。
$?变量,作用是显示上一次命令的 执行返回值。如果语句执行成功,则返回0,否则1.
If条件语句的多分支结构是工作中最常使用的一种条件判断结构,尽管相对复杂但是更加灵活。
For条件循环语句
For循环语句允许脚本一次性读取多个信息,然后逐一对信息进行操作处理,当要处理的数据有范围时,使用for循环再合适不过了 。
在脚本中使用read命令读取用户输入的密码值,然后赋值给PASSWD变量,并通过-p参数向用户显示一段提示信息,告诉用户正在输入的内容即将作为账户密码,在执行该脚本后会自动使用从列表文件forlist.txt中获取到所有的用户名称,然后逐一使用id用户名命令查看用户信息,并使用$?判断这条命令是否执行成功,也就是判断该用户是否已经存在。
/dev/null是一个被称作linux黑洞的文件,把输出信息重定向到这个文件等同于删除数据,可以让用户的屏幕窗口保持简洁。
/etc/passwd中存放用户名的,可以查看,是否创建成功。
判断主机是否存在,可以使用列表,和for一起使用。
然后前面的双分支if条件语句与for循环语句相结合 ,让脚本从主机列表文件ipadd.txt中自动读取ip地址并将其赋值给HLIST,从而判断ping命令执行后的返回值来逐个测试主机是否在线。
While条件循环语句
使用多分支的if条件测试语句与while条件循环语句,编写一个用来猜测数值大小的脚本Guess.sh。该脚本使用$RANDOM变量来调取出一个随时的数值将这个随机数对1000进行取余操作,并使用expr命令取得其结果,再用这个数值与用户通过read命令输入的数值进行比较判断。
赋予权限
Case条件测试语句
编写脚本key.sh,提示用户输入一个字符并将其赋值给变量key,然后根据变量key的值向用户显示其值是字母、数字还是其他字符。