利用shell命令写的脚本文件,后缀是.sh
shell脚本是一个解释型语言,不需要编译,可直接执行
书写:vi test.sh
#!/bin/bash:说明使用的是/bin目录下的bash
说明完后即可编写脚本文件
bash test.sh:运行文件
source test.sh:运行文件
./test.sh:运行文件
注意下图报错,因为没有执行权限,可使用chmod修改权限直接777最高权限
脚本变量
存放系统和用户需要使用的特定参数(值)
变量名:使用固定名称,由系统预设或用户定义
变量值:能够根据用户设置、系统环境的变化而变化
自定义变量
在终端定义一个变量COUNT,并进行取出使用$
也可在代码中使用,特别注意=两端无空格,注释是#
若不想用此变量了,可看到在右图中最后打印出空格
取值
双引号:允许通过$符号引用其他变量值
弱引用,其中的变量应用会被替换为变量值
单引用:进制引用其他变量值,$是为普通字符
强引用,其中的变量引用不会被替换为变量值,而保持源字符串
反撇号:命令替换,提取命令执行后的输出结果,"和$(...)作用相同"
11反撇号:给其他变量赋值(反撇号是`),12相同功能
数组
包含第二个元素,再往后一共打印3个元素
只读变量
不可更改,不可删除
位置变量和预定义变量
注意:$#统计参数个数,其中的./test2.sh未参与到统计中
环境变量
Shell语句
打印提示
执行三秒,若未输入就退出:
输入不显示
这里就是需要特备注意空格在哪里,一个是等号两端没有,一个是+两端都有
在使用-n -z时,有时候结果正确,有时候错误,11最好加上""这样能特别明确的知道要取的是val1值,7行同样也是
分支语句、循环语句
分支语句
test命令也可使用[]代替,并且注意[]里两边都有空格
判断用户是否存在,如果存在,打印存在,如果不存在,打印不存在
使用到grep语句查找grep "^linux:" /etc/passwd,此时只查找到第一个linux
所以判断用户存不存在,就是统计是否打印了,结合管道wc -l判断打印了几行
而当要是想要输入y也是可以的话,也可以如6行这样:
或的操作是:-o,下面表示大于100,小于0
与:-a
非:!
也可以这样:
29行 *)表示剩余情况
循环语句
使用for循环挨个打印当前文件
打印输入参数
$*和$@都表示所有的参数,区别是,$*加上双引号后是作为一个整体进行一次性打印,而$@还是想上面那样进行打印
C语言方式使用for循环
使用while循环打印0~4
当然同样使用c语言方式也可以
Shell函数
5行的$1是获取10行的linux输入
加了local就是局部变量,否则函数体内部的都是全局变量
而若是使用了命令置换的方式,全局变量val就无法使用了,这里需要注意