Linux学习 -Shell编程之变量和运算符

  • Shell中的变量
  • Shell运算符
  • Shell变量中单引号和多引号的区别

一、Shell中的变量

学过编程语言的伙伴对这个就很熟悉了。

Shell变量的特点 1、Shell定义的变量默认都是字符串格式。

                           2、bash变量默认是弱类型的,无需事先声明变量格式,同时进行赋值和声明

Shell变量分为系统变量和自定义变量

1、系统变量

        操作系统已经定义好的 变量,具有其特殊的 含义,一般都是全部大写。

        系统变量都是全局变量,在任何的Shell中都可以调用。

        如:$HOME      获取当前用户的家目录,一般写脚本时候使用

                $PWD        获取当前目录

                $SHELL      默认的解析器

                $USER       获取当前用户名称

2、用户自定义变量

        用户根据自己的需求来定义变量,完成某种操作。

    (1)、变量赋值

        将一个数字或者字符串 赋值给一个变量来存储。

        定义的格式: 直接在命令行写入: 变量名=变量值

        如:  A=1    

        注意这里的等号 两端不能有空格。

        然后我们使用echo来输出这个变量内容:  echo $A

        这里的$符号,会找到这个A的位置,使用echo输出其中的内容。

(2)、变量撤销

        取消变量的赋值,使变量值为空。

        命令: unset 变量名

         如:  unset A

(3)、声明一个静态变量

        命令: readonly 变量名=变量值

        注意:静态变量是只读变量,不能使用unset来撤销变量。只有当你的虚拟机重新启动,才会自动撤销。

  (4)、变量定义的规则

         1.变量的名字可以由字母、数字、下划线组成,但是不能以数字开头,环境变量名建议大写。(这里的环境变量名就是直接在命令行进行定义的变量,也叫做局部变量),变量名严格按照编程语言的变量名进行,区分大小写。

        2.等号两侧不能有空格
        3.在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。

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

用户定义的环境变量(局部变量)进行提升为全局环境变量,可以供其它Shell程序使用。

如:我们定义局部变量为: D="ZJ123"

        然后,创建一个sh文件,在文件中写入:

                #!/bin/bash

                echo "helloworld"

                echo $D

        我们在执行这个sh文件的时候,只会 显示 helloworld,没有D的值。

        因为D变量是局部变量,在文件中是调用不到的,因此需要提升D变量为全局变量。

        使用命令  export D

        然后再执行,显示  helloworld   ZJ123.

   命令: export 变量名        //用来提升变量为全局环境变量

3、特殊变量

         (1)、特殊变量 -- $n

                功能描述: Sn  --  n为数字,S0代表该脚本名称,S1-$9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如S{10} ) 

                案例操作:创建一个sh文件,然后输出 $1 $2 $3

        

#!/bin/bash
echo "$0 $1 $2 $3 $4"

                然后执行这个sh文件,结果显示是sh文件的文件名称,而当我们继续执行

                        bash  A.sh  B

                        bash A.sh B C  D

                    结果显示,在文件名后 ,依次出现我们执行的参数。

                这个类似于编程里面的形参和实参,其中的$1 $2 $3就相当于形参,我们在执行sh文件的时候,后面加的内容就是实参,通过将实参传递进sh文件中,替换形参进行输出。不过要注意形参的个数,假如实参个数大于形参,则不显示超出的。 

         (2)、特殊变量 -- $#

                功能描述: 获取所有输入参数的个数,常用于循环

                案例操作:

                                创建一个sh文件,写入

#!/bin/bash
echo "$0 $1 $2 $3 $4"

echo "$#"

                        结果显示,$# 可以显示当前实参的个数。

        

        (3)、特殊变量 -- $*  、$@

                功能描述:

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

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

                案例操作:

        

#!/bin/bash
echo "$0 $1 $2 $3 $4"

echo "$#"
echo "$*"
echo "$#"

                        结果显示: 其中结果虽然显示一样,但是其中还有些不同之处。 

             

          (4)、特殊变量 -- $?

                        功能描述:用于证明上一条命令是否执行正确。

                                具体是: 显示最后一次执行的命令的返回状态。如果这个变量的值为0,证明上个命令正确执行;

                                如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。

                        案例操作:

        

、Shell运算符

        1、基本语法

                (1)、“$((运算式))” 或者 "$[运算式]"

                (2)、expr  +、-、\*、/、%、   加 减 乘 除 取余

                        注意 expr 运算符中间要有空格

                案例操作:

                        

                

要计算复杂的乘法 如 (2+3)x20
    则命令为   expr `expr 2 + 3` \* 20

注意在Linux中,``  这种反引号中命令执行结果会被保留下来,继续下一步计算

如果要使用 $ 来完成计算,则需要
        s=$[(2+3)*4]
  然后使用echo,输出s , echo $s
   结果为: 20

三、Shell变量中单引号和多引号的区别

我们在定义变量的时候,可以知道,定义变量有多种方式。

如:   age=10    、  age="10" 、 age='10'  ,这样定义所输出的age内容是一样的。

但是我们在使用单引号和双引号定义的时候,还是有一些区别:

        具体是:单引号变量不识别特殊语法,双引号变量识别特殊语法。

我们在使用后发现,使用单引号的时候假如里面有特殊语法会原封不动 的输出。

但是使用双引号时候里面有特殊语法,会执行特殊语法后,然后输出。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值