当前位置:网站首页>Shell变量、系统预定义变量$HOME、$PWD、$SHELL、$USER、自定义变量、特殊变量$n、$#、$*、[email protected]、$?、env看所有的全局变量值、set看所有变量
Shell变量、系统预定义变量$HOME、$PWD、$SHELL、$USER、自定义变量、特殊变量$n、$#、$*、[email protected]、$?、env看所有的全局变量值、set看所有变量
2022-07-22 22:55:00 【Redamancy06】
文章目录
- 1.变量
- 1.1系统预定义变量
- 1.2自定义变量
- 1.2.1基本语法
- 1.2.2变量定义规则
- 1.2.3案例
- 1.2.3.1定义变量a
- 1.2.3.2查看没有定义的sssshell
- 1.2.3.3“=”号前后有空格的情况
- 1.2.3.4更改变量的值
- 1.2.3.5当要赋值的内容有空格的时候需要加上单引号或者双引号
- 1.2.3.6局部变量和全局变量
- 1.2.3.7将ssshell定义成全局变量
- 1.2.3.8在子shell中更改父shell全局变量只在子shell有效,回到父shell里不会改变
- 1.2.3.9用vim输出全局变量和局部变量的区别
- 1.2.3.10在set中看自定义变量
- 1.2.3.11声明静态变量
- 1.2.3.12撤销变量a
- 1.2.3.13不能撤销静态变量
- 1.2.3.14在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算
- 1.2.3.15如果进行数值运算需要使用,需要使用shell中的运算符的表达
- 1.3特殊变量
1.变量
1.1系统预定义变量
1.1.1常用系统变量
$HOME、$PWD、$SHELL、$USER 等

1.1.2看所有的全局变量值
[[email protected] scripts]# env
如果想看的方便可以加 | less

[[email protected] scripts]# printenv
[[email protected] scripts]# printenv USER
这样输入的时候不用加$符号,他可打印全部或部分shell 环境
[[email protected] scripts]# set

看所有变量包括全局变量和自定义变量局部变量
1.2自定义变量
1.2.1基本语法
1)定义变量:变量名=变量值,注意,=号前后不能有空格
2)撤销变量:unset 变量名
3)声明静态变量:readonly 变量,注意:不能 unset
1.2.2变量定义规则
1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
2)等号两侧不能有空格
3)在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算。
4)变量的值如果有空格,需要使用双引号或单引号括起来。
1.2.3案例
1.2.3.1定义变量a
[[email protected] scripts]# a=2

1.2.3.2查看没有定义的sssshell
[[email protected] scripts]# echo $sssshell
1.2.3.3“=”号前后有空格的情况

1.2.3.4更改变量的值

1.2.3.5当要赋值的内容有空格的时候需要加上单引号或者双引号

1.2.3.6局部变量和全局变量
env只能查系统所设置的全局变量,而set可以查看所有定义的变量,到这步还不能完全知道ssshell是局部变量还是全局变量继续往下走
打开一个子shell
说明ssshell是局部变量
1.2.3.7将ssshell定义成全局变量
当我们需要在子shell里使用ssshell变量时,我们需要将ssshell定义成全局变量,定义ssshell变成全局变量的时候需要在创建ssshell的父shell变,不能在其他子shell变

1.2.3.8在子shell中更改父shell全局变量只在子shell有效,回到父shell里不会改变

1.2.3.9用vim输出全局变量和局部变量的区别

在hello.sh中加上局部变量sssshell然后执行hello.sh的结果为
如果用绝对路径的话是没有hello,linux这条的,因为sssshell是局部变量
把sssshell变量变为全局变量结果为
这两个都显示
1.2.3.10在set中看自定义变量
定义了a变量,在set里面可以找到


1.2.3.11声明静态变量
[[email protected] ~]# readonly b=2

静态变量和局部变量都在set里面
1.2.3.12撤销变量a
[[email protected] ~]# unset a


set里面没有a变量了
1.2.3.13不能撤销静态变量

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

1.2.3.15如果进行数值运算需要使用,需要使用shell中的运算符的表达
[[email protected] ~]# a=$((1+4))

[[email protected] ~]# a=$[5+2]

1.3特殊变量
1.3.1$n
1.3.1.1基本语法
$n (功能描述:n 为数字,$0 代表该脚本名称,$1-$9 代表第一到第九个参数,
十以上的参数,十以上的参数需要用大括号包含,如${10})
1.3.1.2案例实操
1.3.1.2.1在vim里面""和’'的区别
用双引号扩住$n和用单引号扩住$n
双引号扩住$n代码变量
不管单引号扩住什么都原封不动的输出
1.3.1.2.2$n的使用



用绝对路径的话需要给parameter.sh加上执行权限
1.3.2$#
1.3.2.1基本语法
$# (功能描述:获取所有输入参数个数,
常用于循环,判断参数的个数是否正确以及 加强脚本的健壮性)。
1.3.2.2$#


1.3.3 $*、[email protected]
1.3.3.1基本语法
$* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
[email protected] (功能描述:这个变量也代表命令行中所有的参数,不过[email protected]把每个参数区分对待)
1.3.3.2$*[email protected]的使用



1.3.3$?
1.3.3.1基本语法
$? (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一 个命令正确执行;
如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明 上一个命令执行不正确了。)
1.3.3.2判断 parameter.sh 脚本是否正确执行

边栏推荐
- Google Earth engine app - a complete map legend app (land use classification of western United States)
- Typora设置标题自动添加序号
- SSH 免密登陆配置
- promise(一)
- 93.(leaflet篇)leaflet态势标绘-进攻方向修改
- Organizational structure of agile testing team
- 网站图标的实现
- 容器监控三剑客CAdvisor收集监控数据 + InfluxDB储存数据 + Granfana展示图表数据的简介
- Arduino中断实现上升沿检测,并执行其他函数
- Promise (II)
猜你喜欢

程序环境和预处理

Send benefits again! Calendar applet source code

开发者分享|MindSpore Lite 体验,一键实现图像分割

Jmeter分布式压测

Typora设置标题自动添加序号

promise(一)

阿里云国际版忘记会员名或登录密码,怎么办?

Redis persistence operation (RDB, AOF)

Can the formatted data of the USB flash disk be recovered? How to recover the formatted data of the USB flash disk

Understand the interrupt system in STM32 in simple terms -- from principle to simple engineering examples -- nanny level tutorial
随机推荐
This is not a true sense of the meta universe, which should have its own distinctive characteristics and unique development logic
深度解析kube-scheduler调度上下文
bryntum Kanban Task Board 5.1.0 JS 看板
黑马程序员-接口测试-四天学习接口测试-第二天-接口用例设计,测试点,功能测试,安全测试,性能测试,单接口测试,业务场景测试用例,postman简介,安装
Google Earth engine app - a complete map legend app (land use classification of western United States)
[reading notes > statistics] 12-01 construction of confidence interval - Introduction to the concept of confidence interval
Jedis operation redis
Strings in C language
嵌入式系统移植【5】——交叉编译工具链
Send benefits again! Calendar applet source code
网络参数管理
Xiaohongshu joins hands with HMS core to enjoy HD vision and grow grass for a better life
LC:剑指 Offer 39. 数组中出现次数超过一半的数字
Promise (II)
RedisTemplate Pipeline 管道使用
uni-app进阶之内嵌应用【day14】
又发福利!日历小程序源码
BufferedInputStream缓冲区填充问题
数的三次方根
The cubic root of a number