一、流程控制语句
if(判断条件和if中间有空格)
格式1:
if 判断条件
then
判断为true执行的代码
fi
格式2:
if 判断条件
then
判断为true执行的代码
else
判断为false执行的代码
fi
格式3:
if 判断条件
then
判断为true执行的代码
elif 判断条件
then
判断为true执行的代码
。。。
else
判断为false执行的代码
fi
注意:else可加可不加
判断条件的写法
[]:[]两边加空格,符号两边加空格并且符号前加转义符
可以使用字母预算符
[[]]:[[]]两边加空格,符号两边加空格
可以使用字母运算符,可以用在字符窜比较上。
():弃用
(()):不需要加空格,但是不能使用字母运算符
在使用变量时,不需要使用$
二、循环语句
for
java格式:
for ((初始化变量;判断条件;控制语句))
do
执行语句
done
python格式:
for 变量 in 结果集
do
执行语句
done
结果集:
{开始..结束}含头含尾,不能引用变量
`seq 开始 结束`含头含尾
echo -n 表示输出不换行。
例:输出乘法口诀表
for((i=1;i<=9;i++))
do
for((j=1;j<=i;j++))
do
echo -n $j"*"$i=$[i*j]" "
done
echo ""
done
水仙花数
for i in {100..999}
do
a=$[i%10]
b=$[i/10%10]
c=$[i/100]
d=$[a*a*a+b*b*b+c*c*c]
if ((d==i))
then
echo $i是水仙花数
fi
done
1到100的素数
for i in `seq 1 100`
do
for((j=2;j<=i-1;j++))
do
if ((i%j==0))
then
echo $i不是素数
break
elif ((j==i-1))
then
echo $i是素数
fi
done
done
三、键盘录入read
格式:
read 变量1 变量2 ...变量n
注意:
键盘录入时,允许给多个变量进行赋值,值和值之间以空格切分,录入值时也要用空格区分。
当录入的值少于变量数时,剩下的变量默认为空。
当录入的值多于变量数时,多余的值包括空格都会赋值给最后一个变量。
例:键盘录入行数,打印一个三角形。
四、数组
1、概述:存储多个元素,数据类型可以不同,元素元素之间以空格分开
2、格式:array_name=(value0 value1 value2 value3)
3、通过下标获取数据
格式:
${数组名[下标]}
注意:
直接引用数组变量,echo $数组名,默认输出数组下标为0的元素,${#arr}=${#arr[0]}。
下标使用*表示获取所有
4、获取长度:
格式:
${#数组名[*]}
5、赋值:arr[下标]=value
6、遍历:
7、冒泡排序
arr=(7 2 1 4 6 55 6)
for i in `seq 1 ${#arr[*]}`
do
for j in `seq 0 $[${#arr[*]}-2]`
do
if ((arr[j]>arr[j+1]))
then
t=${arr[j]}
arr[j]=${arr[j+1]}
arr[j+1]=$t
fi
done
done
for i in ${arr[*]}
do
echo $i
done
五、方法
1、格式:
function 方法名(){
方法体
return 数字;
}
2、注意:function和return可加可不加
$0...$n表示接收参数,$0永远是脚本名称(忽略)
方法的调用直接使用方法名不加()
3、传参
如果方法里需要接受传参,需要在调用方法时在后面加上传参的值
方法外的传参可以在文件运行的时候加上传参的值。
4、返回值
return只能返回数字范围在0-255之间
$?接收返回值只能接收一次,第二个$?默认接受的是方法的最后执行状态;
如果有返回值,就返回,如果没有返回值,返回方法最后的执行状态,通常是0-255之间的数,通常0表示执行没问题,255表示执行错误哦。
六、显示时间
1、获取当前日期时间
date+"%Y-%m-%d %H:%M:%S"
2、格式化日期时间:
date -d today +"%Y-%m-%d %H:%M:%S"
3、加减日期时间
date +%Y%m%d //显示前天年月日
date +%Y%m%d --date="+1 day" //显示前一天的日期
date +%Y%m%d --date="-1 day" //显示后一天的日期
date +%Y%m%d --date="-1 month" //显示上一月的日期
date +%Y%m%d --date="+1 month" //显示下一月的日期
date +%Y%m%d --date="-1 year" //显示前一年的日期
date +%Y%m%d --date="+1 year" //显示下一年的日期
七、重定向
1、概述:执行命令的结果写写入到文件
2、> , >>(错误信息无法写入,会被输出到终端上)
>表示覆盖写入,>>表示追加写入
>和>>前面默认有个1,写入正确信息,如果只写入正确信息,在前面加2,正确信息被输出到终端上。
3、标准输入文件(stdin):stdin的文件描述符为0,默认从stdin读取数据。
标准输出文件(stdout):stdout 的文件描述符为1,默认向stdout输出数据。
标准错误文件(stderr):stderr的文件描述符为2,向stderr流中写入错误信息。
想要把错误信息和正确信息写入文件需要后面追加2>&1(把错误信息当做正确信息去处理)
如果想把正确信息和错误信息都不写入在后面加上1>&2;
4、如果在文件中写入重定向命令,文件需要是全路径,如果不在当前路径的话,执行不成功。
八、定时器
1、格式:
*(分钟) *(小时) *(星期) *(几号) *(月份) 命令
2、在终端中通过crontab -e添加定时任务
注意:
定时器或脚本中涉及到路径的全部给绝对路径
查看定时任务是否执行了,看日志tail -f /var/log/cron
3、时间设置
* * * * * 每分钟
*/1 * * * * 每分钟
0 */1 * * * 每小时