目录
基础知识:
一、编写shell的基本要素
1、shell文件要以#!/bin/bash开头,表示使用/bin/bash解释shell命令
2、如果运行多条命令时,需要使用;隔开
3、#表示注释
二、shell文件运行的注意
1、要修改文件的权限使用chmod
chmod +x 文件名 或者 chmod 0777 文件名 将文件修改为可执行
2、执行shell的三种方法
a、./shell文件 使用文件内指定的解释器来解释shell命令。重启一个shell脚本
b、bash shell文件 使用bash解释器来解释shell命令。重启一个shell脚本
c、. shell文件 在当前shell中运行该脚本文件
编程语法:
一、shell变量
1、自定义变量
注意事项:
定义变量时 等号(=)两边不能有空格
引用变量时 使用$变量名
清除变量时 使用unset 变量名
从键盘中获取输入内容 使用 read 变量名
只读变量 使用readonly 变量名
将类型转换为int型 declare -i 变量名
2、环境变量
使用export设置,在terminal中键入env可以查看环境变量,要永久修改环境变量可以在家目录中的.bashrc文件中添加,然后运行source ~/.bashrc 或者重启./bashrc文件
3、预设变量
$@/$* 传输内容
$# 传参数量
$1、$2、...$9 形参,超过10的用{}
$? 命令返回状态,0表示正常
$0 查看进程名
$$ 查看进程号
注意事项:“”、‘’、``、\、()、{}的用法
“” 变量会被解释
‘’变量会被解释为字符串
``当作命令解释
\转义字符 echo -e \t \n等
()不影响当前shell中的变量
{}会影响当前shell中的变量
二、条件测量
test 命令 或者 [ 命令 ]
-e 文件是否存在
-s 文件是否为非空
判读文件权限
-r 文件是否有读权限
-w 文件是否有写权限
-x 文件是否有可执行权限
时间戳比较
-nt 前一个文件是否比后一个新
-ot 前一个文件是否比后一个旧
-ef 判断硬链接
字符串比较
= 字符串相等
!= 字符串有差异
-z 字符串长度是否为0
-n 字符串长度是否不为0
数字比较
-eq 值相等
-ne 不相等
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于
复合判断
&& 多个条件同时满足为真
|| 多个条件中有一个为真则为真
-a 同一个条件满足多种要求
-o 同一个条件满足多个条件中的一个
! 取反
执行结构
选择结构
if控制语句
if [ 条件1 ];then #then与if在同一行时,用;隔开;不在同一行则不用;
命令1;
命令2;
elif [ 条件2 ];then #then与if在同一行时,用;隔开;不在同一行则不用;
命令3;
命令4;
else
命令5;
命令6;
fi
case控制语句
case $变量名 in
值1)
命令1;
;;
值2)
命令2;
;;
值3)
命令3;
;;
值4)
命令4;
;;
*)
exit 1 或者 ;;
esac
循环结构
for控制语句
#第一种
for(( 初始值;判断条件;执行步阶 ))
do
命令1;
命令2;
done
#第二种
for 变量名 in 变量值
do
命令;
done
while控制语句
#第一种 条件成立运行内容
while [ 条件 ]
do
命令
done
#第二种 条件不成立运行内容
until [ 条件 ]
do
命令
done
函数
#格式一
函数名()
{
}
#格式二
function 函数名()
{
}