linux中shell变量是什么,Linux Shell基础-Bash变量

本文详细介绍了Linux Shell中的用户自定义变量和环境变量的使用,包括变量定义、叠加、查看与删除。环境变量在所有子Shell中生效,并可通过配置文件全局设置。文章还讲解了系统常见环境变量如PATH的作用,以及位置参数变量、预定义变量的使用。此外,讨论了Shell中的数值运算与运算符,并展示了如何进行整数运算。最后,提到了变量测试与运算符在Shell编程中的应用。
摘要由CSDN通过智能技术生成

一 用户自定义变量

1 变量定义

name=”shen chao”

注意 变量名不能以数字开头,可以不加双引号,但如果有空格,就必须加双引号或单引号

2变量叠加

2b7ebca43fe4243ea1e39cd1de1800b3.png

如果需要增加变量的值,那么可以进行变量值的叠加,形式可以是

da94f7e7f318f65180b5be8e32554c09.png

3a4718aab4a2f06697ba288fc6efba3a.png

3 查看变量set

c4ea9c82a01de2589b68c255b03dce67.png

4 删除变量unset 变量名

比如unset aa

二 环境变量

1 环境变量是什么

用户自定义变量只能在当前Shell中生效,而环境变量会在当前Shell和这个Shell的所有子Shell中生效,如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的Shell中生效

什么事Shell的子Shell呢,我们可以通过pstree来查看下

ef70439b7a7f76fb3680a4fa4fffe260.png

我们看到中间一行 -login-bash-pstree

如果我输入命令csh,就是切换到当前Shell的子Shell csh

75e0b518b669c513756a16f9cf7ccc7b.png

再用pstree看下

0176e73517287d160a0dfd913d3a6985.png

如果想退出当前子Shell用exit

fc045322569d5a727d91879660f655c5.png

再来pstree看下

71984f4a974fd07f62068076ee6cc863.png

恢复到之前的Shell了

2 设置环境变量

export 变量名=变量值 ,比用户自定义变量多了一个export

env查询环境变量

unset 变量名 删除变量

c65f10f9feb9925beb8ca89f6d93b439.png

我们用env查看下

28adc2da7eaf6c6ad613ae38ac2b981c.png

3 系统常见环境变量

PATH:系统查找命令的路径

002cd4952e20432829d34bde6b2f526f.png

这个环境变量的意思是如果用户输入一个命令或可执行文件,不加绝对路径或者相对路径,只是命令或可执行文件本身的名字,那么系统就会到这个路径下寻找该可执行文件,如果我们写了一个命令或脚本,可以把自己的路径加进来

PATH=”$PATH”:/root/sh

PS1:定义系统提示符的变量

什么是系统提示符

01c56f02915eb0bb304f500f9516a993.png

这个就是系统提示符

\d:显示日期,格式为”星期 月 日”

\h:显示简写主机名,如默认主机名为”localhost”

\t:显示24小时制时间,格式为”HH:MM:SS”

\T:显示12小时制时间,格式为”HH:MM:SS”

\A:显示24小时制时间,格式为”HH:MM”

\u:显示当前系统名

\w:显示当前所在目录的完整名称

\W:显示所在目录的最后一个目录

\#:执行的第几个命令

\$ 如果是root用户,会显示为#,如果是普通用户显示$

我们来看几个例子

e3cbeae71a1b636ecd0ce7425a2c621a.png

7d65a3ff06952e0cd1af6f261840fc1c.png

0102ab6ab61b44e5575844c4be49b855.png

三 位置参数变量

$n n为数字,$0代表命令本身,$1到$9代表第1到9个参数,10以上需要加{} ${10}

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

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

$# 这个变量代表命令行中参数的个数

例子1

我们来写一个脚本 canshu1.sh

9166890e3976d7a651cd8760347ffbb5.png

输出两个数相加的结果

7f43e7e8a13f455ca4de5c1a60ba3794.png

例子2

9a42416a838402d1819d5a4d24a09e43.png

e0317a26f86c21347362deadbd80c771.png

例子3

$*与$@的区别

df4306b7016e8e5caabe7d49dc3683bc.png

8f0da6425b3e4db5396c8f47aa5fd19c.png

$*中的所有参数看成一个整体,所以for循环只会执行一次

$@中的每个参数都看成是独立的,所以有几个参数,就会循环几次

四 预定于变量

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

abfca4fa35e4eaa05b599ab2565aab9c.png

$$ 当前进程的id号(PID)

\$! 后台运行的最后一进程的id号(PID)

897d56ce2e1bc1e9c39050ec00a398a6.png

find最后的&号代表是后台执行

bbdaba1860c0a3f899c4e5760c81d557.png

接收键盘输入

read 选项 变量名

-p “提示信息” :在等待read输入时,输出提示信息

-t 秒数:指定等待的时间

-n 字符数:不用按回车,达到指定字符数,就会执行

-s :隐藏数据的输入,适用于机密的输入

6cc09d4cf13496d495801c9d06f4ca86.png

551eb1c12afc1b831cfb44bc57cedf7c.png

五 数值运算与运算符

我们先来看一个例子

389ab5cc5ab4d2e0b3f36a91974e1306.png

aa和bb相加的结果依然是字符串,而不是我们想象到的33,这是因为Shell中默认是字符串,那如果我想要整数想加的结果怎么办呢

declare +/- 选项 变量名

- :给变量设定类型属性

+ : 取消变量的类型属性

-i :将变量声明为整数型

-x:将变量声明为环境变量

-p:显示变量被声明的类型

所以刚才如果用declare -i cc=$aa+$bb

就可以得到我们整数运算的值了

fbab0dd0da55e0a60be4cc23a9a0abe8.png

还可以用数值运算工具

expr

302c37e6eb9002329b3d2c8fe602955e.png

注意,要用这种方式,+号左右必须有空格

感觉很麻烦,推荐用下面这种方式

065909f098f7c2841d4956fd4bb86368.png

在Shell中常见的运算符

7d8b9b59be24100802c11f5c17650074.png

注意,这里是优先级的数字越大,优先级越高

abcd276615a897b201a164a39cc9936b.png

六 变量测试与运算符

0608643a315ec1ca495a2dcf2c9dc7b6.png

主要是用在Shell编程中判断y值的

1c92b47e00c0f5f1e32cf9b40c234408.png

因为y不存在,所以x=new

679a96ba6f4b3972d61eb59c28961bb0.png

3503ecf717d06231e34c72beaca35dea.png

好了,Linux Shell基础-Bash变量就总结到这里,如有问题,欢迎指正,谢谢。

0b1331709591d260c1c78e86d0c51c18.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值