shell:变量

本文介绍了Shell编程中的变量概念,包括变量的命名规则,如驼峰法、匈牙利命名法和下划线命名法。讨论了变量的分类,如本地变量、环境变量、位置变量和只读变量,特别强调了只读变量的定义和取消。还涵盖了变量的赋值方法,如直接赋值、读取变量赋值、位置变量赋值和命令返回结果赋值。此外,文章还提及了变量的作用域以及算数和逻辑运算符的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是变量

变量就是程序设计语言中的一个可以变化值的量。(可以命名的内存空间)

变量名 变量值 变量数据类型( 整形 char 浮点类型 布尔类型)

但shell弱类型语言不需要定义变量类型

二、变量的命名

在Shell中,变量名可以由字母、数字或者下划线组成,并且只能以字母或者下划线开头。

常见的命名方法:

1.驼峰法:

小驼峰法:第一个单词以小写字母开始,从第二个单词开始以后的每个单词的首字母都采用大写字母。eg:myFirstName

大驼峰法:大驼峰法把第一个单词是大写,后面的单词首字母也大写。 eg:MYLastName

2.匈牙利命名法:变量名=属性+类型+对象描述(标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途 ) eg:m_lpszStr

属性部分:g_ 全局变量 ​   c_ 常量 ​    m_ c++类成员变量 ​    s_ 静态变量 ​

类型部分: ​ 数组 a ​    指针p ​   函数fn_

3.下划线命名法:eg:file_name.

三、变量的分类

1)本地变量 2)环境变量 3)位置变量 4)预定义变量 5)只读变量

1.本地变量(自定义变量)----仅在当前终端生效
2.环境变量 定义环境变量-----在当前终端和当前终端的子终端下生效

(1)定义变量

本地变量  :变量名=变量值 变

环境变量:将自定义变量转换成环境变量

方法一 export back_dir2=/home/backup

方法二 back_dir1=/home/backup export back_dir1

引用变量:$变量名 或 ${变量名}

查看变量:echo $变量名 set(所有变量:包括自定义变量和环境变量)

                env printenv (环境变量)

取消变量:unset 变量名

作用范围:仅在当前shell中有效

补充:查看后台进程:
[root@localhost.localdomain ~]#jobs
[root@localhost.localdomain ~]#ps -aux | grep sleep

5.只读变量 ---默认不可以取消,只能做变量值的引用操作

只读变量

将变量配置成为 readonly 类型,该变量不可被更改内容,也不能 unset 

定义方法

方法一: readonly [-fap] [变量定义] -f 定义只读函数 -a 定义只读数组变量 -p 显示系统中全部的变量列表

方法二: declare –r 变量定义

取消变量

unset 选项:-f 取消的是函数 -v 取消的是变量(数组)

declare命令
  • +/-  "-"可用来指定变量的属性,"+"则是取消变量所设的属性。

  • -f  仅显示函数。

  • -r  将变量设置为只读。(=readonly)--既可以指定也可以查看

  • -x  指定的变量会成为环境变量,可供shell以外的程序来使用。

  • -i  [设置值]可以是数值,字符串或运算式。(定义变量类型)

[root@192 scripts]# declare i B  ---声明了变量类型,则不能转换,必须手动取消

[root@192 scripts]# declare +i B  ---取消指定的变量类型

四、变量的赋值

变量的四种赋值方式:

(1) 直接赋值 name=

(2)读取变量赋值法,read命令 read v1

read 命令常用参数:
     -p “提示语句:”屏幕打印出一行提示语句。
     -n 字符个数设置read命令计数输入的字符。当
     -t 等待时间   计时输入
     -s 关闭回显

(3) 位置变量赋值法 ,使用命令行参数 ($1 $2 $3 ..) name=$1

(4)命令返回结果赋值,使用命令的输入 username=$(whoami)

注:如果在命令行进行赋值操作的话使用set --

 五、变量的作用域

全局变量 局部变量 --看有没有local(有则局部(另外,函数的参数也是局部变量 ),无则全局)

在脚本中定义的变量都是全局变量,其作用域为从被定义的地方开始,一直到Shell脚本结束或者被删除。 ​与全局变量相比,局部变量的使用范围较小,通常仅限于某个程序段访问,例如函数内部

六、变量的运算

算数运算符
算数/逻辑/比较运算符说明/含义
+、-                加法(或正号)、减法(或负号)
*、/、%惩罚、除法、取余(取模)
**幂运算
++、--自增和自减
!、&&、||逻辑非(取反)、逻辑与(and)、逻辑或(or)
<、<=、>、>=比较符号(小于、小于等于、大于、大于等于)
==、!=、=比较符号(相等、不相等;对于字符串,=可以表示相等于)
<<、>>向左移位、向右移位
~、|、&、^        

按位取反、按位或、按位与、按位异或

=、+=、-=、*=、/=、%=赋值运算符,例如 a+=1相当于a=a+1,a-=1相当于a=a

算数 运算命令

 只有awk,bc(结果怪怪的)可以做小数运算

expr表达式和运算符至少一个空格隔开

 实现变量运算: $(())、$[] let 、declare -i (前四个变量运算)

                             bc、 expr、 awk(直接输出显示)

eg:

 

 小结:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值