shell基础学习

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

Shell是用户与Linux操作系统沟通的桥梁

shell基础语句

创建:后缀为.sh的文件

编写:头部注释为#!/bin/sh或#!/bin/sh(可写可不写,建议写)

运行:

1.通过sh命令执行

例如:sh helloworld.sh

2.通过bash命令执行

例如:bash helloworld.sh

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

例如:chmod u+x 文件名

./helloworld.sh(必须在当前目录下)

变量(动态数据类型,没有数据类型的限制,并且必须初始化)

定义和初始化

格式

变量名称=值

例如:

x=10 "abc edefg"

注意:

等号两边不能有空格

使用:通过$区分变量还是一句话

格式1:

$变量

格式2:

${变量}

注意:

格式1,会把$后所有相连内容看做一个变量

格式2,${}表示值引用{}之中的内容分,对相连的内容做了一个区分

位置变量

$1,$2,.....${10}....

test.sh 3 89

$0:脚本自身

$1:脚本的第一个参数

$2:脚本的第二个参数

位置变量直接$引用只能识别一位,即只能识别¥后第一位数字

环境变量

例如:export HAVA_HOME=usr/local/soft/jdk.1.8.0_171

运算符

算术运算符

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

格式1:

`expr 值 + 值`

注意:符号两边需要加上空格

格式2:

$[值+值]

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

格式:

$[值符号值](符号两边空格加不加无所谓)

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

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

例如:

#判断2>1结果

echo $[2 > 1]

#反转2>1结果

echo $[!$[2>1]]

# 反转后面的结果2>1 and 2>3 false0

echo $[!$[$[2>1]&$[2>3]]]

echo $[2>1 & 2<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可加可不加

判断条件的写法:

        []:[]两边加空格,符号两边加空格并且符号前加转义符

        可以使用字母

        [[]]:[[]]两边加空格,符号两边加空格

        可以使用字母

        ():弃用

        (()):不需要加空格,但是不能使用字母

        在使用变量时,不需要使用$

for

    java格式:

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

        do

        执行语句

        done

    python格式:

        for 变量 in 结果集

        do

        执行语句

        done

结果集:

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

        `seq 开始 结束`含头含尾

例如:获取1-100的奇数和偶数和

        jsum=0

       osum=0

 for i in {1..100}

 do

        if ((${i}%2==0))

        then

        #osum=`expr ${i} + ${osum}`

        #或osum=$[${i}+${osum}]

        或let osum+=i

else

        let jsum+=i

fi

done

echo 偶数和为:${osum}

echo 奇数和为:${jsum}

注意:

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

shell数组

数组的一般形式为

数组名={值1 值2 ... 值n}

获取数组中的所有元素

        ${数组名【*】}

获取数组中下标为1的元素

        ${数组名【1】}

获取数组的长度

        ${#数组名【*】}

shell字符串

  • 单引号:tr='this is a string'

                单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;

                单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。

  • 双引号

        双引号里可以有变量

        双引号里可以出现转义字符

        #拼接字符串

        your_name="runoob"

        # 使用双引号拼接

        greeting="hello, "$your_name" !"

        greeting_1="hello,${your_name"

        echo $greeting $greeting_1

#使用单引号拼接

        greeting_2='hello, '$your_name' !'

        greeting_3='hello, ${your_name} !'

        echo $greeting_2 $greeting_3

获取字符串长度

        echo ${#string}

提取字符串

        echo${字符串名:1:4}

test

test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试

        num1=100

        num2=100

        if test $[num1] -eq $[num2]

        then

        echo '两个数相等!'

        else

        echo '两个数不相等!'

        fi

shell函数

格式:

function 函数名(){

代码块

return 返回值;

}

$?接收参数,接收 当前方法的最后的执行状态(0表示没问题)

说明:

1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。

2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n 0-255

shell日期

获取当前日期时间

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

重定向

        command > file 将输出重定向到 file

        command >> file 将输出以追加的方式重定向到 file

重定向深入讲解

一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:

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

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

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

如果希望屏蔽 stdout 和 stderr,可以这样写:

        $ command > /dev/null 2>&1

        /dev/null 文件

如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null:

        $ command > /dev/null(可以理解为写入到回收站)

定时器

* * * * *command

$ crontab -e

可以像使用v i编辑其他任何文件那样修改crontab文件并退出。

查看定时任务是否执行了,看日志

tail -f /var/log/cron

使用完毕后将crontab -e 中内容删除

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值