shell变量之学习笔记

编程入门 行业动态 更新时间:2024-10-10 04:26:08

shell<a href=https://www.elefans.com/category/jswz/34/1771380.html style=变量之学习笔记"/>

shell变量之学习笔记

shell变量之学习笔记

    • Shell变量概念
      • 1 shell变量分类:
      • 2 变量的赋值
      • 3 变量赋值格式:
      • 4 变量命名方式
      • 5 变量声明
      • 6 变量引用
      • 7 变量清除
      • 8 变量只读
      • 9 内部参数变量
      • 10 位置参数变量
      • 11 退出和返回状态
      • 12 命令替换
      • 13 read命令
      • 14 字符串长度与截取
      • 15 字符串替换
      • 16 变量的间接引用
      • 同时输出多行信息

Shell变量概念

变量用于保存有用信息,如路径名、文件名、数字等。Linux用户使用变量定制其工作环境,使系统获知用户相关配置。本质上是存储数据的一个或多个计算机内存地址。

1 shell变量分类:

用户自定义变量,由用户自己定义、修改、使用
环境变量path,这类变量由系统维护
位置参数变量,这类变量通过命令行给程序传递执行参数
内部参数变量,是bash预定义的特殊变量,用户不能修改

2 变量的赋值

变量的赋值变量是某个值的名称,引用变量称为变量替换,$是变量替换符号,如vars是变量名。
那么

$vars 就表示变量的值。

3 变量赋值格式:

vars=value
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,任何用户不能对此变量进行重新赋值
格式: vars=value
readonly vars

[root@localhost tmp]# name=josh
[root@localhost tmp]# echo $name
josh
[root@localhost tmp]# readonly name
[root@localhost tmp]# unset name
-bash: unset: name: 无法反设定: 只读 variable
[root@localhost tmp]# name='jack'
-bash: name: 只读变量

可以看出,变量只读后,无法清除和重新赋值

9 内部参数变量

Shell内部参数变量是一组特殊的变量,它们由Shell自动设置和维护,用于存储有关Shell和正在运行的命令的信息。以下是一些常见的Shell内部参数变量及其用途:

内部参数变量与含义:
$0:保存当前脚本或命令的名称。
$#:保存传递给脚本或函数的位置参数的数量。
$@:保存所有传递给脚本或函数的位置参数的列表。
$*:保存所有传递给脚本或函数的位置参数的列表,作为一个单独的字符串。
与进程相关的内部参数与含义:
$$:保存当前Shell进程的进程ID(PID)。
$?:保存上一个命令的退出状态(返回值)。通常,0表示成功,非零值表示出现了错误。
$!:保存在后台运行的最后一个命令的PID。
$_表示在此之前执行的命令或脚本的最后一个参数

10 位置参数变量

$0	脚本名字
$1	第一个参数($2第二个,以此类推)

11 退出和返回状态

$? 	来实现返回状态
0	表示成功,其他均错误
1	执行失败
126 没有权限
127 命令没找到

0

1

126

127

12 命令替换

两个例子将sshd的进程数统计出来,赋予变量

sshdnum=`ps ef | grep sshd |wc -l`

sshd1um=$(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 字符串替换

[root@localhost tmp]# var="aaabcd opple mysqldba"
[root@localhost tmp]# echo ${var#a}		#删除第一次出现的a
aabcd opple mysqldba
[root@localhost tmp]# echo ${var/a/i}	#将第1次出现的a替换为i
iaabcd opple mysqldba
[root@localhost tmp]# echo ${var/#aa/i}	 #将第1、2次出现的a替换为i
iabcd opple mysqldba
[root@localhost tmp]# echo ${var//a/i}		#将所有a替换为i
iiibcd opple mysqldbi
[root@localhost tmp]# echo ${var/%a/x}    	#在行尾添加一个x
aaabcd opple mysqldbx

16 变量的间接引用

将str1赋值给str2,通过间接引用变量,实现变量值的替换

[root@localhost tmp]# str1="Hello world"
[root@localhost tmp]# str2=str1
[root@localhost tmp]# echo $str2
str1
[root@localhost tmp]# echo ${!str2}
Hello world
[root@localhost tmp]# eval echo \$$str2
Hello world

同时输出多行信息

echo命令输出多行信息,多行中间不能出现双引号,否则会提前结束,或者使用转义\

[root@localhost tmp]# echo "           
line1
line2
line3
"line1
line2
line3cat输出多行,多行中不能出现END开始的行,否则提前结束
[root@localhost tmp]# cat <<END
line1
line2
line3
END
line1
line2
line3

更多推荐

shell变量之学习笔记

本文发布于:2023-12-05 23:36:12,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1665733.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:变量   学习笔记   shell

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!