Shell变量、系统预定义变量$HOME、$PWD、$SHELL、$USER、自定义变量、特殊变量$n、$#、$*、$@、$?、env看所有的全局变量值、set看所有变量

简介: Shell变量、系统预定义变量$HOME、$PWD、$SHELL、$USER、自定义变量、特殊变量$n、$#、$*、$@、$?、env看所有的全局变量值、set看所有变量

@[toc]
如果想看更详细的Shell总结请到我之前写的博客https://blog.csdn.net/Redamancy06/article/details/126048299

1.变量

1.1系统预定义变量

1.1.1常用系统变量

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

在这里插入图片描述

1.1.2看所有的全局变量值

[root@hadoop100 scripts]# env
在这里插入图片描述
如果想看的方便可以加 | less

在这里插入图片描述
[root@hadoop100 scripts]# printenv
在这里插入图片描述
[root@hadoop100 scripts]# printenv USER
在这里插入图片描述
这样输入的时候不用加$符号,他可打印全部或部分shell 环境

[root@hadoop100 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

[root@hadoop100 scripts]# a=2

在这里插入图片描述

1.2.3.2查看没有定义的sssshell

[root@hadoop100 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声明静态变量

[root@hadoop100 ~]# readonly b=2
在这里插入图片描述

在这里插入图片描述
静态变量和局部变量都在set里面

1.2.3.12撤销变量a

[root@hadoop100 ~]# unset a

在这里插入图片描述

在这里插入图片描述
set里面没有a变量了

1.2.3.13不能撤销静态变量

在这里插入图片描述

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

在这里插入图片描述

1.2.3.15如果进行数值运算需要使用,需要使用shell中的运算符的表达

[root@hadoop100 ~]# a=$((1+4))

在这里插入图片描述
[root@hadoop100 ~]# 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 $*、$@

1.3.3.1基本语法

$* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体) 
$@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)

1.3.3.2$*$@的使用

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.3.3$?

1.3.3.1基本语法

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

1.3.3.2判断 parameter.sh 脚本是否正确执行

在这里插入图片描述

如果想看更详细的Shell总结请到我之前写的博客http://t.csdn.cn/cQArA

相关文章
|
3天前
|
Shell Android开发
Android系统 adb shell push/pull 禁止特定文件
Android系统 adb shell push/pull 禁止特定文件
16 1
|
1月前
|
Shell Linux C语言
【Shell 命令集合 系统管理 】Linux 显示系统的平均负载情况 tload命令 使用指南
【Shell 命令集合 系统管理 】Linux 显示系统的平均负载情况 tload命令 使用指南
40 1
|
1月前
|
监控 安全 Shell
【Shell 命令集合 系统管理 】Linux 查看系统上的失败登录记录 lastb命令 使用指南
【Shell 命令集合 系统管理 】Linux 查看系统上的失败登录记录 lastb命令 使用指南
41 0
|
1月前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 显示当前登录到系统的用户信息 who命令 使用指南
【Shell 命令集合 系统管理 】Linux 显示当前登录到系统的用户信息 who命令 使用指南
43 1
|
1月前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 显示目前登入系统的用户信息 w命令 使用指南
【Shell 命令集合 系统管理 】Linux 显示目前登入系统的用户信息 w命令 使用指南
45 2
|
1月前
|
存储 Unix Shell
【Shell 命令集合 系统管理 】⭐⭐Linux 显示系统的基本信息 uname命令 使用指南
【Shell 命令集合 系统管理 】⭐⭐Linux 显示系统的基本信息 uname命令 使用指南
35 1
|
1月前
|
存储 安全 Shell
【Shell 命令集合 系统管理 】Linux 显示系统中所有用户的登录记录 last命令 使用指南
【Shell 命令集合 系统管理 】Linux 显示系统中所有用户的登录记录 last命令 使用指南
33 0
|
1月前
|
Linux Shell C语言
【Shell 命令集合 系统管理 】Linux 删除Linux系统中的用户组 groupdel命令 使用指南
【Shell 命令集合 系统管理 】Linux 删除Linux系统中的用户组 groupdel命令 使用指南
35 0
|
24天前
|
Shell
【shell】shell命令行放在变量中执行以及变量的常用方法
【shell】shell命令行放在变量中执行以及变量的常用方法
|
1月前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 实时监控系统性能 top命令 使用指南
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 实时监控系统性能 top命令 使用指南
40 2