Shell脚本入门(一)基础语法

发布时间:2026/7/28 18:34:10
Shell脚本入门(一)基础语法 目录1、Shell解析器2、变量3、运算符4、条件判断5、流程控制6、read函数1、Shell解析器默认在CentOS使用的是bash2、变量2.1 系统变量$USER、$SHELL、$HOME、$PWD2.2 自定义变量①定义变量变量值注意等号两边不能有空格。②撤销变量unset 变量③声明静态变量readonly 变量值注意常量使用unset无法撤销④将变量提升为全局变量export 变量可以看到在之前定义的变量C是没有被输出它是局部变量。使用export将它变为全局变量。变量定义规则①等号两边不能有空格②变量可以以数字、字母、下划线组成不能以数字开头建议环境变量名使用全大写③bash中变量默认类型是字符串无法直接进行数值运算④变量的值如果有空格使用单引号或者双引号括起来。2.3 特殊变量① $n$n中n代表数字 $0代表脚本文件名称$1~$9代表第一到第九个参数 十以上的参数使用${10}。② $#: 用于获取所有输入参数的个数常用于循环中。②$* 与 $$* 代表命令行中所有的参数$*把所有的参数看成一个整体。$ 代表命令行中所有的参数$*把每个参数区别对待。③$? 返回上次执行命令的状态0代表执行成功非0则代表失败。vim parameter.shecho $? 返回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后要有空格 ②[ 条件判断式 ] 条件判断式前后要有空格练习判断输入的数字是否大于105.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