大场网站建设,机票旅游网站建设,企业云服务平台,杭州平面设计培训shell变量之学习笔记 Shell变量概念1 shell变量分类#xff1a;2 变量的赋值3 变量赋值格式#xff1a;4 变量命名方式5 变量声明6 变量引用7 变量清除8 变量只读9 内部参数变量10 位置参数变量11 退出和返回状态12 命令替换13 read命令14 字符串长度与截取15 字符串替换16 变… shell变量之学习笔记 Shell变量概念1 shell变量分类2 变量的赋值3 变量赋值格式4 变量命名方式5 变量声明6 变量引用7 变量清除8 变量只读9 内部参数变量10 位置参数变量11 退出和返回状态12 命令替换13 read命令14 字符串长度与截取15 字符串替换16 变量的间接引用17 同时输出多行信息18 比较符 Shell变量概念
变量用于保存有用信息如路径名、文件名、数字等。Linux用户使用变量定制其工作环境使系统获知用户相关配置。本质上是存储数据的一个或多个计算机内存地址。
1 shell变量分类
用户自定义变量由用户自己定义、修改、使用 环境变量path这类变量由系统维护 位置参数变量这类变量通过命令行给程序传递执行参数 内部参数变量是bash预定义的特殊变量用户不能修改
2 变量的赋值
变量的赋值变量是某个值的名称引用变量称为变量替换$是变量替换符号如vars是变量名。 那么 $vars 就表示变量的值。 3 变量赋值格式
varsvalue vars1‘value key’ 切记等号两边无空格如果value中含空格需要用引号括起来没有空格括起来与不阔无区别。
4 变量命名方式
大小写字符、数字、下划线等符号变量名不能以数字开头
5 变量声明
使用变量前首先要进行变量声明 shell变量为弱类型不需要定义变量类型 变量声明与赋值格式变量值等号两边不能有空格
6 变量引用
KaTeX parse error: Expected EOF, got # at position 12: 变量名 #̲1个字符建议用如a KaTeX parse error: Expected EOF, got # at position 10: {变量名} #̲多于1个字符建议使用这种方式…{abc} echo $变量 #显示变量用echo
7 变量清除
变量不需使用时用unast进行清除 格式unast 变量名
8 变量只读
变量设置为只读用readonly任何用户不能对此变量进行重新赋值 格式 varsvalue readonly vars
[rootlocalhost tmp]# namejosh
[rootlocalhost tmp]# echo $name
josh
[rootlocalhost tmp]# readonly name
[rootlocalhost tmp]# unset name
-bash: unset: name: 无法反设定: 只读 variable
[rootlocalhost tmp]# namejack
-bash: name: 只读变量可以看出变量只读后无法清除和重新赋值
9 内部参数变量
Shell内部参数变量是一组特殊的变量它们由Shell自动设置和维护用于存储有关Shell和正在运行的命令的信息。以下是一些常见的Shell内部参数变量及其用途
内部参数变量与含义
$0保存当前脚本或命令的名称。
$#保存传递给脚本或函数的位置参数的数量。
$保存所有传递给脚本或函数的位置参数的列表。
$*保存所有传递给脚本或函数的位置参数的列表作为一个单独的字符串。
与进程相关的内部参数与含义
$$保存当前Shell进程的进程IDPID。
$?保存上一个命令的退出状态返回值。通常0表示成功非零值表示出现了错误。
$!保存在后台运行的最后一个命令的PID。
$_表示在此之前执行的命令或脚本的最后一个参数10 位置参数变量
$0 脚本名字
$1 第一个参数$2第二个以此类推11 退出和返回状态
$? 来实现返回状态
0 表示成功其他均错误
1 执行失败
126 没有权限
127 命令没找到0
1
126 127
12 命令替换
两个例子将sshd的进程数统计出来赋予变量
sshdnumps ef | grep sshd |wc -lsshd1um$(ps -ef |grep sshd |wc -l)13 read命令
read命令用来接收键盘输入内容为变量赋值
read [-p 信息] [var1 var2 ...]read 操作一个变量 read操作多个变量 双引号“”允许通过 引用其他变量值单引 号 ′ ′ 禁止引用其他变量值 引用其他变量值 单引号禁止引用其他变量值 引用其他变量值单引号′′禁止引用其他变量值视为普通字符 反撇号··将命令执行结果输出给变量
14 字符串长度与截取
使用${#string}来获取字符串的长度其中string是你要测量长度的字符串。
使用${string:position:length}来截取字符串其中string是原始字符串position是截取的起始位置从0开始计数length是截取的字符数。
删除开头
echo ${josh#t}删除结尾
echo ${josh%e}15 字符串替换
[rootlocalhost tmp]# varaaabcd opple mysqldba
[rootlocalhost tmp]# echo ${var#a} #删除第一次出现的a
aabcd opple mysqldba
[rootlocalhost tmp]# echo ${var/a/i} #将第1次出现的a替换为i
iaabcd opple mysqldba
[rootlocalhost tmp]# echo ${var/#aa/i} #将第1、2次出现的a替换为i
iabcd opple mysqldba
[rootlocalhost tmp]# echo ${var//a/i} #将所有a替换为i
iiibcd opple mysqldbi
[rootlocalhost tmp]# echo ${var/%a/x} #在行尾添加一个x
aaabcd opple mysqldbx16 变量的间接引用
将str1赋值给str2通过间接引用变量实现变量值的替换
[rootlocalhost tmp]# str1Hello world
[rootlocalhost tmp]# str2str1
[rootlocalhost tmp]# echo $str2
str1
[rootlocalhost tmp]# echo ${!str2}
Hello world
[rootlocalhost tmp]# eval echo \$$str2
Hello world17 同时输出多行信息
echo命令输出多行信息多行中间不能出现双引号否则会提前结束或者使用转义\
[rootlocalhost tmp]# echo
line1
line2
line3
line1
line2
line3cat输出多行多行中不能出现END开始的行否则提前结束
[rootlocalhost tmp]# cat END
line1
line2
line3
END
line1
line2
line318 比较符
-eq //equals等于
-ne //no equals不等于
-gt //greater than 大于
-lt //less than小于
-ge //greater equals大于等于
-le //less equals小于等于