变量的介绍
(1)系统变量:如 $HOME,$SHELL,$USER
(2)自定义变量:用户自定义的变量
(3)显示当前shell中所有变量:set
shell变量的定义
(1)定义变量:变量=值
(2)撤销变量:unset 变量
(3)声明静态变量:readonly 变量
(4)定义变量的规则
① 变量名称可以有字母、数字和下划线组成,但是不能以数字开头
② 等号两侧不能有空格
③ 变量名称一般为大写
(5)将命令的返回值赋给变量
① 使用反引号:A=`ls-la`
② 使用括号:A=$(ls-la),等价于反引号
(6)设置环境变量
① 将shell变量输出为环境变量
export 变量名=变量值
② 让修改后的配置信息立即生效
source 配置文件
③ 查询环境变量的值
echo $变量名
(7)位置参数变量
使用位置参数变量可以获取命令行的参数信息
① $n:n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,${10}
② $*:代表命令行中所有的参数,把所有的参数看成一个整体
③ $@:代表命令行中所有的参数,把每个参数区别对待
④ $#:代表命令行中所有参数的个数
(8)预定义变量
① $$:当前进程的进程号PID
②$!:后台运行的最后一个进程的进程号PID
③ $?: 最后一次执行的命令的返回状态,命令正确执行返回0,否则返回非0
判断语句
(1)基本语法
[ condition ]:注意condition前后要有空格,非空返回true,可用$?进行验证
(2)常用判断条件
-lt:小于
-le:小于等于
-eq:等于
-gt:大于
-ge:大于等于
-ne :不等于
-r:有读的权限
-w:有写的权限
-x:有执行的权限
-f:文件存在并是一个常规的文件
-e:文件存在
-d:文件存在并是一个目录
流程控制
(1)if判断
if [ 条件判断式 ];then 程序 fi #或者(推荐使用) if [ 条件判断式 ] then 程序 elif [ 条件判断式 ] then 程序 fi #注意中括号之间有空格
(2)case语句
case $变量名 in "值1") 如果变量的值等于值1,则执行程序1 ;; "值2") 如果变量的值等于值2,则执行程序2 ;; …省略其他分支… *) 如果变量的值都不是以上的值,则执行此程序 ;; esac
(3)for循环
#语法一: for 变量 in 值1 值2 值3… do 程序 done #语法二: for (( 初始值;循环控制条件;变量变化 )) do 程序 done
(4)while循环
while [ 条件判断式 ] do 程序 done
read读取控制台输入
read(选项)(参数)
-p:指定读取值时的提示符
-t:指定读取值等待的时间
参数为指定读取值的变量名
系统函数
(1)basename基本语法
返回完整路径最后/的部分,常用于获取我文件名
basename [pathname] [suffix]
basename [string] [suffix]
suffix为后缀,如果其被指定,basename会把pathname或string中的suffix去掉,获取文件名
(2)dirname基本语法
返回完整路径最后/的前面部分,常用于返回路径部分
dirname 文件绝对路径
从给定的包含绝对路径的文件名中去除文件名,然后返回剩下的路径
自定义函数
(1)基本语法
[ function ] funname[()] { Action; [return int;] } #调用函数: funname [值]