Linux之Shell编程
一 shell的变量
-
变量的介绍
(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)“$((运算式))”或“$[运算式]”
(2)expr m + n,注意运算符间要有空格
(3)expr m - n
(4)expr * ,/, %乘除取余
三 条件判断
-
判断语句
(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 [值]