shell编程

shell是一个用c语言编写的程序,是用户操作linux的桥梁

(与终端的区别是shell一次可以执行多条命令)

红色——字符串

绿色——变量名

黄色——关键字

紫色——输出

1、创建:后缀为.sh的文件

vim shell01.sh

2、编写:

头部注释为#!/bin/sh或者#!/bin/bash

3、运行:

1)通过sh命令执行

        sh shell01.sh

2)通过bash命令执行

        bash shell01.sh

3)通过把文件修改为可执行的文件(绿色)然后通过./文件命令.sh来执行

        chmod 777 shell01.sh

        ./shell01.sh

变量(shell中没有具体数据类型的限制,只有string,并且必须初始化)

1)定义和初始化

格式:变量名称=值

例如:x="helloworld"

注意:变量,等号和值之间不能有空格

2)变量的引用

格式1:$变量

格式2:${变量}

注意:$会将$之后所有连续的内容当作变量,直到遇到下一个$

         可以通过{}给变量加边界

shell脚本的位置变量

位置变量$1,$2,...,${10},...

从$1开始(因为$0永远都是脚本名称)shell已经规定的位置变量,用不用位置都在那,只不过有的做了输出(接受并在控制台显示了),有的没有做输出(只接受并未在控制台显示)

下标大于一位数只能使用${}获取参数,因为$下标只把第一位数据看做下标

$*获取所有参数

$#获取所有参数个数  

引号

单引号:单引号中的内容原样输出

双引号:可以引用变量,拥有特殊含义的内容

注意:引号是成对出现的,相连两个引号是一对

符号:1.默认不显示的:引号  $  \

           2.默认显示的:? *

            转义符\默认不显示,将转义符后面第一位符号的含义进行修改

字符串的一些操作

拼接:连续获取变量

注意:如果有多个引号,连续的两个引号形成一对

引号中使用其他引号,其他引号做字符串使用

字符串

1)获取字符串长度

格式:${#变量}

2)截取

格式:${变量名:开始位置:长度}

注意:${str::5}        从开始获取5个

           ${str:0}        从开始获取到末尾(${str})

3)替换

格式:${变量/旧/新}   替换单个

格式:${变量//旧/新}     替换所有

注意:替换不会在原字符上进行修改,想要修改原字符串只能从新赋值

4)删除

从头开始删除

${变量#表达式}:匹配第一个删除

${变量##表达式}:匹配最后一个删除

 从尾开始删除

${变量%表达式}:匹配第一个删除

${变量%%表达式}:匹配最后一个删除

注意:从未开始删除,表达式还是从左向右去写

删除不会再原字符上进行修改,想要修改原字符串只能从新赋值

运算符

1)算术运算符:加,减,乘,除

bash不支持简单的数学运算,可以通过命令实现expr,反引号`

格式1:`expr 值  +  值`

注意:+两边需要加上空格

格式2:$[值+值]

2)比较运算符: > < >= <=....

echo $[2>1&2<1]

注意:比较的结果用1(true)和0(false)表示

3)逻辑运算符: &/and  |/or   !/not

echo $[!2>1]

shell流程控制语句

1)if语句

格式1:if 判断条件

                then        

                        判断为true执行的代码

              fi

格式2:if 判断条件

                then

                        判断为true执行的代码

                else

                        判断为false执行的代码

               fi

格式3:if 判断条件

                then

                        判断为true执行的代码

              elif 判断条件

                then

                        判断为true执行的代码

              .....

              else

                        判断为false执行的代码

              fi

注意:else可加可不加

2)for循环

java格式:

        for ((初始化变量;判断条件;控制语句))

        do

                执行语句

        done

python格式:

        for 变量 in 结果集

        do

                执行语句

        done

结果集:

格式1:

{开始..结束} 含头含尾,不能引用变量

格式2:

`seq 开始 结束` 含头含尾,可引用变量,变量需加$     

`seq $a $b`

`seq 1 100` 

 注意:使用let在计算时可以直接使用变量

注意:echo后加上 -n 表示不换行

数组:存储多个元素,数据类型可以不同,元素元素之间以空格切分

格式:数组名=(值1 值2  ... 值n)

注意:直接引用数组变量,默认获取下标为0的元素

获取某个元素:${数组[下标]}

获取数组长度:${#数组[*]}

获取数组所有元素:${数组[*]}

read:键盘录入

格式:read 变量1 变量2 ...变量n

(类似于可变参数,多余的输入的值归为最后一个变量)

注意:键盘录入时,允许给多个变量进行赋值,值和值之间以空格切分

函数

格式:

        function 方法名(){

        方法体

        return 数字;

        }

注意:function和return可加可不加

return只能返回数字范围在0-255之间,没有return就把方法体中最后一个命令的结果作为返回值(1.0表示执行成功的返回值   2.其他数字就是报错)

方法的调用:直接使用方法名不加()

$?接收返回值只能接收一次

函数的位置变量

$0...$n表示接收参数,$0永远是脚本名称(忽略)

注意:位置变量一旦涉及个位以上就需要打{ }作为边界,如${10}

获取当前日期时间

date +"%Y-%m-%d %H:%M:%S"

  

格式化日期时间:

date -d today +"%Y-%m-%d %H:%M:%S"

加减日期时间

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"  //显示后一年的日期

重定向:执行命令的结果写写入到文件

> :覆盖

>> :追加

标准输入文件(stdin):stdin的文件描述符为0,默认从stdin读取数据。

标准输出文件(stdout):stdout 的文件描述符为1,默认向stdout输出数据。

标准错误文件(stderr):stderr的文件描述符为2,向stderr流中写入错误信息。

使用>,>>默认是把正确信息写入文件

想要把错误信息和正确信息写入文件需要后面追加2>&1(把错误信息当做正确信息去处理)

定时器

格式:*(分钟) *(小时) *(星期) *(几号) *(月份) commend

通过crontab -e添加定时任务

查看定时任务是否执行了,看日志tail -f /var/log/cron

注意:定时器或脚本中涉及到路径的一定要给绝对路径

* * * * * 每分钟

*/1 * * * * 每分钟

0 */1 * * * 每小时

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值