shell编程:流程控制语句、循环语句、键盘录入read、数组、方法、显示时间、重定向、定时器。

一、流程控制语句

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  *  *  *        每小时

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值