linux系统中读取变量时使用的运算符,Linux的shell编程篇之变量与运算

一、变量

在多数语言中,变量一般都包括四个特性:作用、名称、类型、值。

1、变量的命名规则:

1.1、变量的名称可以是由字母、数字、下划线组成,但不可以以数字开头。

1.2、在bash中,变量的默认类型是字符串型。如执行数字运算,则需要指定变量类型为数值型。

1.3、与其他语言一样,变量与值之间使用“=”连接,但“=”左右不能存在空格。

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

1.5、变量的值是可以叠加的。

c0749da1a966516fe3b9112c4887f0d8.png

1.6、变量的名称使用大写,目的是与Linux的系统命令区分开来。

2、变量的分类:

用户自定义变量:最常见的变量,可以由用户自由定义变量的作用、名称、类型、值。

环境变量分为两种:

用户自定义环境变量:可以由用户自由定义变量的作用、名称、类型、值。

系统环境变量:这种变量的作用、名称、类型都是系统固定好的,一旦修改便会出现问题。变量的值可以由用户自己修改但不可随意修改。

位置参数变量:与预定义变量一致。

预定义变量:就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用。变量的作用、名称、类型都是固定的,用户可以自定义值。

3、用户自定义变量的增用改查删。

50051f5143ca91b3290cc472fc64f393.png

3e1db710f66ca769c2564608300490e8.png

2156fa76315a7420f5446819e93795ff.png

7fc876d1716aac52d02b85b207baca16.png

293ca11b95ff7bd729d000b6bc229644.png

cd1b71853bcce12387d0d2631c496d5d.png

注意:下面这个图中的QQ变量,第一个是本不存在的变量,第二个我赋予了空值(空值也是一个值)。但两者的输出结果一样,我们没法分辨。这时候就需要(set -u)命令来区分。

7535da3f164cdc2b4882a89b5115faa8.png

下图中删除了QQ变量,然后使用了(set -u)命令,此时再次输出变量QQ,就显示报错。

f64fbd14b67ac0bdafa6569b292b2311.png

4、用户自定义环境变量。

与用户自定义变量大致相同。不过需要执行export命令,可以将用户自定义变量变为用户自定义环境变量。

0c54d7350f219c3b4eadb06e5041c495.png

两者的区别:用户自定义变量只能适用于当前的shell,不存在与其他子shell中。而用户自定义环境变量在整个系统中都是生效的。

执行(pstree)命令(没有此命令可以安装psmisc 依赖包),可以查看进程树。这里显示的当前bash(也成为父shell)。

bf6a6a50e2b068d04763faeb5486de63.png

当执行(bash)命令后,便进入了子shell。

61cdbd877f2380667bd8b5bf0195460f.png

97b4b4763322c9555a96ff0aa1dd0d88.png

输入exit,可以退回到上一级shell中。

5、系统环境变量。

最常用的PATH环境变量

在执行命令的时候,我们输入的都是命令本身,并没有填写路径,但是却可以在任意目录执行。这里使用到的就是PATH环境变量。

e782a91c9b165b797739e6bb8995f5ca.png

上面图可以看到,PATH变量定义的是一些路径,通过(:)来进行分开。所以,我们将写好的脚本放在一个固定目录中。再将目录的绝对路径保存在PATH变量中,调用脚本时,任意目录直接输入脚本名称就可以执行。

8db32502cde85ddb8994b1d46da171bc.png

上面添加的PATH环境变量也是临时的,一旦重启就会消失。要想永久生效,需要写入配置文件中。

6、位置参数变量

6.1、$n:其中,n为数字,0代表命令本身,1-9代表从第一至第九个参数,若参数十个以上时举例{10}。

一个简单的加法计算器1

da269342cf9642afa34a18d3b5f14a76.png

4bc22077bcc5d30c70f9c15c31c0ac66.png

上面的图总共输出了两行。而前面输入的79  21 就是执行命令后面添加的两个参数,分别赋值给了num1与num2进行加法计算,输出100;而第二行是echo $0 输出命令本身。

6.2、$*、$@:代表执行命令时后面的参数。$*会把所有的参数看成为一个整体;而$@是把每个参数当作一个整体。

1e91b9f7fdef55f35e0f76c1223527ac.png

03ddb8cf1871554620c1df2987d25625.png

两种不同的输出结果,第一种结果是变量a将输入的五个参数作为一个值输出;第二种结果是变量b将五个参数作为五个值输出。

6.3、$#:统计变量的个数。

c1ff21c670d2732931200672f35d6920.png

0fb92120abd7f71766d23b23575cff28.png

6.4、接收键盘输入

上面的输入都需要在命令后面加上参数,也可以设置成为带有提示信息的等待用户输入。

read  选项  变量

选项:-p “提示信息”:在等待键盘输入时给予的提示信息

-t   数字:等待时间(单位秒)

-n  数字:限制用户的输入长度

-s:隐藏用户的输入(密文输入)

简易加法计算器2

4f7d486224f9f184afc485294bb63827.png

7、预定义变量

7.1、$?:最后一次命令的执行状态。在多数默认情况下,返回值为0,则代表上一条命令程序正常执行;若返回值非0,则代表上一条命令程序执行不准确。

7.2、$$:当前进程的进程号(PID)。

7.3、$!:后台运行的最后一个进程的进程号(PID)。

8、变量的类型

在shell中,变量的默认类型是字符串类型。如果想要改变变量的类型可以有以下几种方法。

8.1、declare +/-  选项   变量

其中 + :取消设定变量的类型

- :设定变量的类型

a :设定/取消变量为数组型

i :设定/取消变量为整数型

-x :将变量设定为环境变量

-r :将变量设定为只读变量

-p :查询变量的类型

export可以将变量变为环境变量,实际上export命令就是调用的declare -x 这个命令;declare -r可以将变量变为只读变量,只读变量不能修改变量名、不能修改值、不能删除,但这种变量除了系统自带的,用户自动设定的都是临时生效,一旦系统重启,变量就会消失。所有的变量的与变量类型都可以使用declare -p 命令查询。

8.2、调用expr命令进行数值运算

cee5f9fb963c7927513e2241e72c17d5.png

要注意“+”的两边都有空格

8.3、调用let命令进行数值的运算

ec426d2cf5ad32b145f0058e2573b43c.png

8.3、使用"$(())"、“$[]”格式进行数值的运算

c29f5db26369d764dbc25113038bf3dd.png

上面这些数值运算都是整数型数值运算,小数点后直接舍弃,不会四舍五入。

二、运算

1、运算符

四则运算符:(+ - * /);有括号的先算括号内的;%取模(21%4,相当于21/4=5····1,所以21%4的结果为1)。

2、变量的运算

2.1、整数变量运算

82bce1c048cf93ae6c5bd869b5bbb612.png

84443decd951283b6abba414278ba4f6.png

2.2、数组型变量运算

通常情况下,一个变量内保存一个值。但是数组型的变量,一个变量内保存的多个值,而区分这些值靠的就是变量的下标。

正常的标准写法是declare -a num[0]=123。但是由于num[0]这个写法就比较特别,所以将 declare -a 省略系统也是认识的。

下标一般情况下从0开始。

31044f7014bdff06323bb7dc1b0290dc.png

3、变量的测试与内容置换

01c605739366136b173773337d6673fe.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值