目录
1、Shell解析器
2、变量
3、运算符
4、条件判断
5、流程控制
6、read函数
1、Shell解析器
默认在CentOS使用的是bash
2、变量
2.1 系统变量
$USER、$SHELL、$HOME、$PWD
2.2 自定义变量
①定义变量:
变量=值注意:等号两边不能有空格。
②撤销变量
unset 变量
③声明静态变量:
readonly 变量=值注意:常量使用unset无法撤销
④将变量提升为全局变量
export 变量
可以看到在之前定义的变量C是没有被输出,它是局部变量。使用export将它变为全局变量。
变量定义规则:①等号两边不能有空格
②变量可以以数字、字母、下划线组成,不能以数字开头,建议环境变量名使用全大写
③bash中,变量默认类型是字符串,无法直接进行数值运算
④变量的值如果有空格,使用单引号或者双引号括起来。
2.3 特殊变量
① $n:$n中n代表数字, $0代表脚本文件名称,$1~$9代表第一到第九个参数, 十以上的参数使用${10}。
② $#: 用于获取所有输入参数的个数,常用于循环中。
②$* 与 $@
$* 代表命令行中所有的参数,$*把所有的参数看成一个整体。
$@ 代表命令行中所有的参数,$*把每个参数区别对待。
③$?: 返回上次执行命令的状态,0代表执行成功,非0则代表失败。
vim parameter.sh
echo $?, 返回0,这说明最后一次执行的命令成功了。
3、运算符
基本语法:$[运算式] 或者 $((运算式))
或者 expr + - \* / %等操作注意:expr 运算符间要有空格
4、条件判断
语法:[ condition ]注意:condition前后要有空格
条件非空即为true, [ liuzhoujian ] 为true, [] 为false
常用判断条件:
(1)两个整数之间比较 = 字符串比较 -lt 小于(less than) -le 小于等于(less equal) -eq 等于(equal) -gt 大于(greater than) -ge 大于等于(greater equal) -ne 不等于(Not equal) (2)按照文件权限进行判断 -r 有读的权限(read) -w 有写的权限(write) -x 有执行的权限(execute) (3)按照文件类型进行判断 -f 文件存在并且是一个常规的文件(file) -e 文件存在(existence) -d 文件存在并是一个目录(directory)练习:1、判断100 是否大于99
练习2:判断一个文件是否具有可执行权限
多条件判断:
&&表示上一条命令执行成功才执行下一条命令,|| 表示上一条命令执行失败才执行下一条命令。
5、流程控制
5.1 if判断
基本语法:
if [ 条件判断式 ];then 程序 fi 或者 if [ 条件判断式 ] then 程序 fi注意事项:① if后要有空格 ②[ 条件判断式 ] 条件判断式前后要有空格
练习:判断输入的数字是否大于10
5.2 case语句
1.基本语法 case $变量名 in "值1") 如果变量的值等于值1,则执行程序1 ;; "值2") 如果变量的值等于值2,则执行程序2 ;; …省略其他分支… *) 如果变量的值都不是以上的值,则执行此程序 ;; esac 注意事项: 1) case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。 2) 双分号“;;”表示命令序列结束,相当于java中的break。 3) 最后的“*)”表示默认模式,相当于java中的default。练习:输入一个数字,如果是1,输出“该数字是1”, 如果是2,输出“2数字是2”,如果输入的是其他数字,则默认输出“其他”。
5.3 for循环
基本语法:
for (( 初始值;循环控制条件;变量变化 )) do 程序 done 或者 for 变量 in 值1,值2,值3... do 程序 done练习1:从1加到100,输入结果
练习2:输出所有参数
$*与$@的区别:
当$*与$@没加双引号括起来的时候,都以$1,$2...$n的形式输出所有参数
当加上双引号时,$*将所有参数看为一个整体,以“$1 $2 $3...”输出,而$@则将各个参数分开,以"$1", "$2"..的形式输出。
5.4 while循环
基本语法:
while [ 条件判断式 ] do 程序 done练习:从1加到100,输出结果
6、read函数
read(选项)(参数) 选项: -p 指定读取值时的提示语句 -t 指定读取值时的时间限制(秒) 参数: 接受输入的参数的变量名称练习:输入用户名,限时5s