• Shell基础


    1.什么是shell

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

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

     

    2、shell入门

    创建(XXXX).sh文件

    vim (XXXX).sh编写shell代码

     

     

     

     

     

     

     

    shell进阶

    变量的定义与使用(重点)

    变量,先定义后使用。 

    定义形如:class_name="yunwe "

    使用形如:echo $class_name

    使用变量改写入门脚本中的第1个shell脚本。

     

     

    只读变量(了解)

    readonly( 变量名)

     

     

    定义变量a并且其值为10,随后设置其为只读变量,再去尝试重新赋值

     

     

     

    接收用户输入(重点)

    语法:read  -p  提示信息  变量名

     

    编写一个脚本test6.sh,要求执行之后提示用户输入文件的名称(路径),然后自动为用户创建该文件

     

     

     

    删除变量(了解)

    语法:unset 变量名path

    案例:定义变量b=20,再输出b的值,随后删除b,最后再输出下b

     

     

    2、条件判断语句

    语法1(一个条件):

    if condition

    then

        command1

        command2

        ...

    fi

     

    单行写法(一般在命令行中执行的时候):if [ condition ]; then command; fi

     

     

    语法2(两个条件):

    if condition

    then

        command1

        command2

        ...

    else

        command

    fi

     

    语法3(多个条件):

    if condition1

    then

        command1

    elif condition2

    then

        command2

    else

        commandN

    fi

     

    算数运算符

     

    下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20:

    运算符

    说明

    举例

    +

    加法

    `expr $a + $b` 结果为 30。

    -

    减法

    `expr $a - $b` 结果为 -10。

    *

    乘法

    `expr $a \* $b` 结果为  200。

    /

    除法

    `expr $b / $a` 结果为 2。

    %

    取余

    `expr $b % $a` 结果为 0。

    =

    赋值

    a=$b 将把变量 b 的值赋给 a。

    ==

    相等。用于比较两个数字,相同则返回 true(真)。

    [ $a == $b ] 返回 false(假)。

    !=

    不相等。用于比较两个数字,不相同则返回 true。

    [ $a != $b ] 返回 true。

     

     

    关系运算符

    关系运算符只支持数字,不支持字符串,除非字符串的值是数字

    下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20:

    运算符

    说明

    举例

    -eq

    检测两个数是否相等,相等返回 true。

    [ $a -eq $b ] 返回 false。

    -ne

    检测两个数是否相等,不相等返回 true。

    [ $a -ne $b ] 返回 true。

    -gt

    检测左边的数是否大于右边的,如果是,则返回 true。

    [ $a -gt $b ] 返回 false。

    -lt

    检测左边的数是否小于右边的,如果是,则返回 true。

    [ $a -lt $b ] 返回 true。

    -ge

    检测左边的数是否大于等于右边的,如果是,则返回 true。

    [ $a -ge $b ] 返回 false。

    -le

    检测左边的数是否小于等于右边的,如果是,则返回 true。

    [ $a -le $b ] 返回 true。

     

     

     

    逻辑运算符

    下表列出了常用的布尔运算符,假定变量 a 为 10,变量 b 为 20:

    运算符

    说明

    举例

    !

    非运算,表达式为 true 则返回 false,否则返回 true。

    [ ! false ] 返回 true。

    -o

    或(或者)运算,有一个表达式为 true 则返回 true

    [ $a -lt 20 -o $b -gt 100 ] 返回 true。

    -a

    与(并且)运算,两个表达式都为 true 才返回 true。

    [ $a -lt 20 -a $b -gt 100 ] 返回 false。

     

    或运算:一个为真即为真,全部为假才是假

    与运算:一个为假即为假,全部为真才是真

     

     

     

    字符串运算符

    下表列出了常用的字符串运算符,假定变量 a 为 "abc",变量 b 为 "efg":

    运算符

    说明

    举例

    =

    检测两个字符串是否相等,相等返回 true。

    [ $a = $b ] 返回 false。

    !=

    检测两个字符串是否相等,不相等返回 true。

    [ $a != $b ] 返回 true。

    -z

    检测字符串长度是否为0,为0返回 true。

    [ -z $a ] 返回 false。

    -n

    检测字符串长度是否为0,不为0返回 true。

    [ -n $a ] 返回 true。

    str

    检测字符串是否为空,不为空返回 true。

    [ $a ] 返回 true。

     

     

     

     

     

     

    文件测试运算符(重点)

    文件测试运算符用于检测 Unix/Linux 文件的各种属性。

    属性检测描述如下:

    操作符

    说明

    举例

    -b file

    检测文件是否是块设备文件,如果是,则返回 true。

    [ -b $file ] 返回 false。

    -c file

    检测文件是否是字符设备文件,如果是,则返回 true。

    [ -c $file ] 返回 false。

    -d file

    检测文件是否是目录,如果是,则返回 true

    [ -d $file ] 返回 false。

    -f file

    检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true

    [ -f $file ] 返回 true。

    -g file

    检测文件是否设置了 SGID 位,如果是,则返回 true。

    [ -g $file ] 返回 false。

    -k file

    检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。

    [ -k $file ] 返回 false。

    -p file

    检测文件是否是有名管道,如果是,则返回 true。

    [ -p $file ] 返回 false。

    -u file

    检测文件是否设置了 SUID 位,如果是,则返回 true。

    [ -u $file ] 返回 false。

    -r file

    检测文件是否可读,如果是,则返回 true

    [ -r $file ] 返回 true。

    -w file

    检测文件是否可写,如果是,则返回 true

    [ -w $file ] 返回 true。

    -x file

    检测文件是否可执行,如果是,则返回 true

    [ -x $file ] 返回 true。

    -s file

    检测文件是否为空(文件大小是否大于0),不为空返回 true

    [ -s $file ] 返回 true。

    -e file

    检测文件(包括目录)是否存在,如果是,则返回 true

    [ -e $file ] 返回 true。

     

    shell脚本附带选项(重点)

    问题描述:在linux shell中如何处理tail -10 access.log这样的命令行选项?

    步骤:

             调用tail指令

             系统把后续选项传递给tail

             Tail先去打开指定的文件

             取出最后10行

     

  • 相关阅读:
    day01-Tomcat框架分析
    为共创行业解决方案寻找黄金合作伙伴,百数低代码服务商模式在等您
    Maven
    C++设计模式——Composite组合模式
    8. C#多线程基础概念
    机器学习之K-Means聚类(python手写实现+使用Silhouette Coefficient来选取最优k值)
    java-php-net-python-工会管理系统计算机毕业设计程序
    多路转接(上)——select
    jetson安装opencv2
    pandas之数据的合并与分组
  • 原文地址:https://www.cnblogs.com/tbj1292/p/16029845.html