一、格式
命名格式:xxx.sh
内容格式:
头部:#!/bin/sh
输出语句:echo
二、运行
sh xxx.sh或者bash xxx.sh
三、变量
shell没有数据类型,所以在申明变量时直接写
格式:变量名=值
注意:等号两边不能有空格,值也不能用空格分开
在使用变量时,需要通过**$**来进行引用
四、位置变量
$0:脚本名
$1:参数1
$2:参数2
…
例如:echo “脚本名$0,参数1$1,参数2$2…”
运行时给参数:sh xx.sh 10 20
此时的参数2的值就是20
特别注意:当位置变量的个数大于9时,需要用{}括起来
五、引号
单引号:单引号里的内容会原样输出,不能搭配转义符和变量使用
双引号:可以任意使用,没有限制
六、字符串
获取字符串长度:美元符号{#变量名}
截取字符串长度:${变量名:起始下标:长度}
(替换第一个与之相关的内容)字符串替换:美元符号{变量名/准备替换的字符串/替换后的字符串}
(替换所有与之相关的内容)字符串替换:美元符号{变量名//准备替换的字符串/替换后的字符串}
删除:有#和%的用法
#:从头往后找
${#*符号}:表示删除第一个这个符号之前的所有内容
${##*符号}:表示删除最后一个这个符号之前的所有内容
%:从后往前找
${%符号星号}:表示删除最后一个这个符号之后的所有内容
${%%符号星号}:表示删除第一个这个符号之后的所有内容
七、数组
定义格式:数组名=(元素1 元素2 元素3 元素4…)
通过空格将数组中的元素分隔开
${数组名}:这样只能输出数组的第一个元素
${数组名[*]}:获取数组中所有元素
${#数组名[星号]}:获取数组的长度
八、运算符
1、算术运算符
格式:$[值1 运算符 值2] 注:运算符两边加不加空格都行
例如:美元符号[4+2]
2、条件运算符
格式:((条件表达式)) 注:条件表达式的两边加不加空格都行
其他格式用的时候容易出错
输出结果:1表示为true,0表示false
3、逻辑运算符
&:与
|:或
!:非
&&:短路与
||:短路或
九、if控制语句
1、格式:
if 条件表达式
then
执行语句
fi
2、格式:
if 条件表达式
then
执行语句
else
执行语句
fi
3、格式:
if 条件表达式
then
执行语句
elif 条件表达式
then
执行语句
…
else
执行语句
fi
注意:条件表达式的写法有很多种,但是其他的写法都要注意空格的位置,所以这里为了方便记忆,就直接写**(())**这种格式,这种不需要注意空格位置,但是不能用来表达符号是字母时的表达式
十、for循环
例如循环输出0-10
三种格式
1.java格式
for ((i=0;i<=10;i++))
do
echo ${i}
done
2.python格式
for i in {0…10}
do
echo ${i}
done
3.python格式(如果不写起始数,默认从1开始)
for i in 反引号seq 0 10反引号
do
echo ${i}
done
例子:遍历输出数组
#!/bin/sh
#遍历输出数组
arr=(1 2 3 4 a b c d)
for ((i=0;i<${#arr[*]};i++))
do
echo ${arr[${i}]}
done
echo "----------------"
for i in `seq 0 ${#arr[*]}`
do
echo ${arr[${i}]}
done
echo "-------------------"
for i in ${arr[*]}
do
echo ${i}
done
十一、函数
1.两种定义方式
function 函数名(){
代码体
}
函数名(){
代码体
}
2.有返回值的函数
要先调用函数,再通过输出$?的方式输出返回值
3.有参函数
变量设置为参数,然后在调用函数时进行传参
十二、重定向
覆盖:>
追加:>>
将原本输出在控制台的信息重定向输出到指定文本当中
格式:sh 执行脚本的全路径及脚本名称 >> 指定文本的全路径及文本名称 2>&1
例如:sh test.sh >> test.txt 2>&1
十三、定时器
创建一个简单的定时器一般设计三个文件
一个空文件:用来存放定时任务处理后的结果
一个脚本:存放要定时处理的程序
打开定时器:crontab -e 在里面写多长时间定时处理任务
例如:
首先创建一个空文件vim xinxi.txt
然后创建脚本文件vim crontab.sh,在里面写入echo “定时器处理任务” >> /usr/local/zy/crontab/xinxi.txt 2>&1
crontab -e打开定时器,在里面写入* * * * * * sh /usr/local/zy/crontab/crontab.sh
这样一个定时任务就创建完成了
从左到右星号表示含义:
分钟 小时 几号 月份 星期
"* * * * *"表示每分钟执行一次定时任务
查看定时器是否执行的命令:tail -f /var/log/cron