做监控和备份最多
1. shell脚本是什么
它是一种脚本语言,并非编程语言可以使用一些逻辑判断、循环等语法可以自定义子函数是系统命令的集合shell脚本可以实现自动化运维,大大增加我们的工作效率第一个shell脚本:
mkdir shellcd shell/vim 1.sh``#! /bin/bash`#This is a test shell script``echo "123456."`touch aming.111`date2. shell脚本结构以及执行方法
开头行指定bash路径: #! /bin/bash以#开头的行作为解释说明脚本的名字以.sh结尾,用于区分这是一个shell脚本执行方式有两种:chmod +x 1.sh; ./1.sh 如果没有执行权限可以 bash 1.sh 也可以 sh 1.sh 可以查看ls -l /bin/shbash -x 1.sh 可以查看脚本执行过程
cal 输出日历的cal -y 输出整年的日历LANG=en
3. 学会date命令的用法
date +%Y-%m-%d, date +%y-%m-%d ,date +%F 年月日date +%H:%M:%S = date +%T 时间 date +%s 时间戳date -d "+1day"一天后date -d "-1day"一天前date -d "-1day" +%F 一天前的日期是多少date -d "-1month" 一月前date -d "-1hour" 一小时前
date -d "-1hour" +%T 一小时前的时间是多少,下面几个一样date -d “-1min” 一分钟前
date -d “-1sec” 一秒前date +%w, 星期 date +%W 一年的第几周,一年有52个周把运行这个脚本的时间去生成一个日志,保存在tmp目录下
vim 2.sh#! /bin/bashd=`date +%T`logname=$d.logtouch /tmp/$logname执行就tmp就有这个日志了
bc 是计算器
一种是直接输入运输一种 echo "365/7" |bc4. shell脚本中的变量
当脚本中使用某个字符串较频繁并且字符串长度很长时就应该使用变量代替使用条件语句时,变量是必不可少的引用某个命令的结果时,用变量替代写和用户交互的脚本时,变量也是必不可少的内置变量 $0, $1, $2…数学运算a=1;b=2; c=$(($a+$b))或者$[$a+$b]echo "scale=2;5/2"|bc 输出的是2.50
vim 3.sh
#! /bin/bashread -p "Pleaswe input Number" necho $n========
read -t 3 -p "Pleaswe input Number" n t就是超时时间===============vim 4.sh
#! /bin/bashecho $0echo $1echo $2输入参数的时候$0输出的是本身4.sh
vim 5.sh
#! /bin/bashn1=0while :; :表示真的意思,也可以是1 do read -p "please inpty a number :" n m=`echo $n |sed 's/[0-9]//g'` m就是把数字全部删除掉然后判断是不是为空 l=`echo $m|wc -c` 如果是纯数字的话那肯定是空的,l如果不等 if [ $l !="1" ]; then 1就不是空的,肯定包含数字或者是纯字母 echo "the charater you input is not a number." n1=`echo "$n1+1"|bc` l如果不等1就给他记录一次 else echo "your number is $n" 如果是纯数字说明是空的就输出,然后退出 exit 0 fi if [ $n1 == "5" ];then 如果输入的不是数字超过5次就退出 exit 1 fi done
--------------
a=echo $a |wc -c c是有几个字符串输出的是1代表空字符,因为他有一个换行符echo "12345a" |sed 's/[0-9]//g' 这里输出是a
echo "12345" |sed 's/[0-9]//g' 这里输出是空的
------------5. shell中的逻辑判断格式1:if 条件 ; then 语句; fi格式2:if 条件; then 语句; else 语句; fi格式3:if …; then … ;elif …; then …; else …; fi逻辑判断表达式:if [ $a -gt $b ]; if [ $a -lt 5 ]; if [ $b -eq 10 ]等-gt (>); -lt(<); -ge(>=); -le(<=);-eq(==); -ne(!=) 注意到处都是空格
可以使用 && || 结合多个条件n=5if [ $n -gt 2 ] && [ $n -lt 10 ]; then echo ok; else echo nook;fi=if [ $n -gt 2 -a $n -lt 1 ]; then echo ok; else echo nook;fi-a 是与的意思
=========================if [ $n -gt 2 ] || [ $n -lt 1 ]; then echo ok; else echo nook;fi=if [ $n -gt 2 -o $n -lt 1 ]; then echo ok; else echo nook;fi-o 是或者的意思
=========================
格式1和格式2vim 6.sh#! /bin/bashn=10if [ $n -gt 5 ]then echo "greater than 5"else echo "not greater than 5"fi
======================
格式3vim 6.sh#! /bin/bashn=3if [ $n -gt 5 ]then echo "greater than 5"elif [ $n -lt 2 ]then echo "less than 2"else echo "greater than 2"fi
6. if 判断文件、目录属性 [ -f file ]判断是否是普通文件,且存在 [ -d file ] 判断是否是目录,且存在[ -e file ] 判断文件或目录是否存在======[ -r file ] 判断文件是否可读[ -w file ] 判断文件是否可写[ -x file ] 判断文件是否可执行echo $RANDOM 生成一个随机数
echo $RANDOM$RANDOMecho $RANDOM$RANDOM$RANDOM |cut -c 1-10 只要前10位或者mkpasswd mkpasswd -l 20mkpasswd -l 20 -s 0 特殊符号mkpasswd -l 20 -s 0 -c 0 -C 0