当前位置: 首页 > news >正文

Linux shell编程学习笔记5:变量命名规则、变量类型、使用变量时要注意的事项

跟其他的高级开发语言一样,Linux Shell编程中使用的数据也需要保存在变量中。

Shell使用变量来控制其行为,并且可以通过更改变量值来更改Shell和其他程序的行为。

我们先来了解一下变量命令的规则、变量类型和使用变量时要注意的事项。

一、变量命名规则

Linux Shell编程中使用的变量,其命名必须遵循如下这些规则:

1.变量名只能使用英文字母,数字和下划线,且不能以数字开头。
2.变量名不能有空格。
3.变量名不能使用标点符号。
4.不能使用shell里的关键字(可用help命令查看保留关键字)。

按照上面的规则,变量名ab8_、a_b8、_ab8都是合格的变量名,而8ab_是不合格的变量名。

二、变量的类型

运行shell脚本时,会同时存在三种变量:

(一)环境变量

环境变量是在整个系统范围内可用的变量,并由所有衍生的子进程和外壳程序继承。所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。

必要的时候shell脚本也可以定义环境变量。

按照约定,环境变量应具有大写名称。

例如我们在之前使用过的变量SHELL。 

(二)局部变量

局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。

(三)shell变量

shell变量是由shell的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行。


三、使用变量时要注意的事项


(一)shell中使用变量前通常不需要事先为变量作出声明,只是在使用变量时(通常是赋初始值时)来创建它们。

例如:

user@host: ~ # var1=1
user@host: ~ # echo $var1
1

其中:

var1=1 是声明变量var1并初始化其值为1

echo $var1 是显示变理var1的值。


(二)在给变量赋值时,变量名和赋值号(=)之间不能有空格。

例如:

user@host: ~ # var2 = 2
未找到 'var2' 命令,您要输入的是否是:
 命令 'par2' 来自于包 'par2' (universe)
var2:未找到命令

由于 var2 = 2 中的赋值号=前后有空格,因此对shell来说,这条命令的功能并不是声明变量var2并初始化其值为2。

(三)Linux是一个区分大小写的系统,所以Shell中的变量名称区也分大小写,比如var1、Var1与 VAR1是三个不同的变量名。

user@host: ~ # var1=1
user@host: ~ # echo $var1
1
user@host: ~ # echo $Var1

user@host: ~ # echo $VAR1

user@host: ~ # 
 

在上面的例子中,我们声明了变量var1并初始化其值为1,并没有声明变量Var1、VAR1和赋值,所以 echo $Var1 和  echo $VAR1没有显示他们的值。

四、 shell里的关键字

为了方便我们定义变量,我们还需要了解shell里的关键字。

查询shell里的关键字的方法有很多。例如,我们可以使用命令 compgen -k 来查看shell的关键字:

user@host: ~ # compgen -k
if
then
else
elif
fi
case
esac
for
select
while
until
do
done
in
function
time
{
}
!
[[
]]
coproc
user@host: ~ # 

http://www.lryc.cn/news/180274.html

相关文章:

  • 如何把word的页眉页脚改为图片
  • spring6-实现简易版IOC容器
  • Feign接口调用GET请求@RequestParam传参丢失
  • LeetCode每日一题 | 309.买卖股票的最佳时机含冷冻期
  • HTML的学习 Day02(列表、表格、表单)
  • Android shape记录
  • WSL2和ubuntu的安装过程
  • 力扣第150题 逆波兰表达式求值 stack c++
  • 三、飞行和射击
  • GitHub与GitHubDesktop的使用
  • AIGC 微调的方法
  • gcc编译webrtc x64
  • uni-app 实现凸起的 tabbar 底部导航栏
  • 中国1km土壤特征数据集(2010年)
  • 计算机网络笔记 第二章 物理层
  • 使用CreateProcess崩溃:处未处理的异常: 0xC0000005: 写入位置 0x00415652 时发生访问冲突
  • Java 华为真题-出租车计费
  • 开源layui前端框架 收款码生成系统源码 多合一收款码生成源码 带50多套UI模板
  • 微服务moleculer01
  • C++中将指针传递给函数
  • 【51单片机编写占空比按秒渐亮与渐暗】2023-10-2
  • OCI 发布了容器运行时和镜像规范!
  • C++学习笔记一: 变量和基本类型
  • 探索ClickHouse——同时支持导入导出功能的文件格式
  • Scipy库提供了多种正态性检验和假设检验方法
  • 去雨去雪去雾算法之本地与服务器的TensorBoard使用教程
  • 【小沐学前端】Node.js实现基于Protobuf协议的WebSocket通信
  • MySQL学习笔记24
  • objective-c 基础学习
  • 【精彩回顾】 用sCrypt在Bitcoin上构建智能合约