Linux day11

Shell是一个命令行解释器,连接Linux内核和应用。文章介绍了shell脚本的启动方式,包括三种执行方法。讨论了变量的类型,如系统预定义、自定义及静态变量,并详细阐述了变量的定义规则。此外,还涵盖了特殊变量如$n、$#、$*、$@和$?的用途,以及运算符和条件判断的使用,如`test`和方括号条件表达式。
摘要由CSDN通过智能技术生成

Shell

shell概述

        shell是一个命令行的解释器,它接收应用程序/用户命令,然后调用操作系统内核。shell连接Linux内核和外层应用程序。shell还是一个功能相当强大的编程语言,易编写、易调试、灵活性强。

shell脚本入门

        脚本以#!/bin/bash开头(指定解析器)

        脚本的常用执行方式:

                第一种:采用bash或sh+脚本的相对路径或绝对路径(不用赋予脚本+x权限)

                        sh+脚本相对路径

                        sh+脚本绝对路径

                        bash+脚本相对路径

                        bash+脚本绝对路径

                第二种:采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)(而且必须要有路径,不然就会被当成命令去执行)

                第三种(了解):在脚本的路径前加上“.”或者source

        以上三种方式,前两种的启动是创建子shell进行解析执行,而第三种则不是,不会有嵌套shell。开子shell和不开子shell的区别就在于,环境变量的继承关系,如在子shell中设置的当前变量,父shell是不可见的。

变量

系统预定义变量

        $HOME、$PWD、$SHELL、$USER等

自定义变量

        1.定义变量:变量名=变量值,注意,=前后不能有空格

        2.撤销变量:unset 变量名

        3.声明静态变量(常量):readonly变量,注意:不能unset

        定义规则:

                1.变量名可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写

                2.等号两侧不能有空格

                3.在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。

                4.变量的值如果有空格,需要使用双引号或单引号括起来。

        要想将局部变量升级成全局变量,可以通过export 【变量名】将此变量升级成全局变量,注意,当从子变量升级成全局变量时,当你对变量进行更改,在父类是查看不到的,而从父变量升级到全局变量时,对变量的更改能在子变量查看到。

特殊变量

$n

        $n:n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10}

$#

        $#:获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及加强脚本的健壮性

$*、$@

        $*:这个变量代表命令行中的所有参数,$*把所有的参数看成一个整体。

        $@:这个变量也代表命令行的所有参数,不过$@把每个参数区分对待

$?

        $?:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体哪个数字,由命令自己来决定),则证明上一个命令执行不正确了。

运算符

        $((运算式)) 或 $[运算式]

        expr 1 + 2

条件判断

        1.test condition

        2. [ condition ] (注意condition前后要有空格

        注意:条件非空即为true,[ atguigu ]返回true,[  ]返回false。

        常用判断条件:

                1.两个整数间的比较:

                        -eq:等于(equal)

                        -ne:不等于(not equal)

                        -lt:小于(less than)

                        -le:小于等于(less equal)

                        -gt:大于(greater than)

                        -ge:大于等于(greater equal)

                        注:如果只是字符串之间的比较,用等号判断相等;用!=判断不等。等号两边要有空格,否则系统将认为等号连同两边是一个整体,而会执行通过。

                2.按照文件权限进行判断

                        -r:有读的权限

                        -w:有写的权限

                        -x:有执行的权限(execute)

                3.按照文件类型进行判断

                        -e:文件存在(existence)

                        -f:文件存在并且是一个常规的文件(file)

                        -d:文件存在并且是一个目录(directory)

                注意,多条件判断(&&表示前一条命令执行成功时,才执行后一条命令,||表示上一条命令执行失败后,才执行下一条命令)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值