千家信息网

shell 变量

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,变量基础在 Bash shell 中,每一个变量的值都是字符串,变量赋值时,值都会以字符串的形式存储。也就是说,Bash shell 在默认情况下不会区分变量类型,即使你将整数和小数赋值给变量,它们也
千家信息网最后更新 2026年10月31日shell 变量

变量基础

在 Bash shell 中,每一个变量的值都是字符串,变量赋值时,值都会以字符串的形式存储。也就是说,Bash shell 在默认情况下不会区分变量类型,即使你将整数和小数赋值给变量,它们也会被视为字符串 。


变量名

命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。

中间不能有空格,可以使用下划线(_)。

不能使用标点符号。

不能使用bash里的关键字(可用help命令查看保留关键字)。

除了显式地直接赋值,还可以用语句给变量赋值


使用变量

使用一个定义过的变量,只要在变量名前面加美元符号$即可

推荐给所有变量加上花括号{ },这是个良好的编程习惯。

例:


修改变量值

第二次对变量赋值时不能在变量名前加,只有在使用变量时才能加 ,只有在使用变量时才能加,只有在使用变量时才能加

例:


单引号和双引号的区别

定义变量时,变量的值可以由单引号' '包围,也可以由双引号" "包围

例:

以单引号' '包围变量的值时,单引号里面是什么就输出什么,即使内容中有变量和命令(命令需要反引起来)也会把它们原样输出。这种方式比较适合定义显示纯字符串的情况,即不希望解析变量、命令等的场景。

以双引号" "包围变量的值时,输出时会先解析里面的变量和命令,而不是把双引号中的变量名和命令原样输出。这种方式比较适合字符串中附带有变量和命令并且想将其解析后再输出的变量定义。

只读变量


使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。


变量作用域Scope

Shell变量的作用域(Scope),就是 Shell 变量的有效范围(可以使用的范围)。


Shell 变量的作用域可以分为三种:

有的变量只能在函数内部使用,这叫做局部变量(local variable);

有的变量可以在当前 Shell 进程中使用,这叫做全局变量(global variable);

而有的变量还可以在子进程中使用,这叫做环境变量(environment variable)。


export a这种形式是在定义变量 a 以后再将它导出为环境变量,如果想在定义的同时导出为环境变量,可以写作export a=20。


环境变量也是临时的


创建一个新的Shell窗口时,在次访问该环境变量依旧访问不到。


通过 export 导出的环境变量只对当前 Shell 进程以及所有的子进程有效,如果最顶层的父进程被关闭了,那么环境变量也就随之消失了,其它的进程也就无法使用了,所以说环境变量也是临时的。


命令替换

Shell命令替换是指将命令的输出结果赋值给某个变量。比如,在某个目录中输入 ls 命令可查看当前目录中所有的文件,但如何将输出内容存入某个变量中呢?这就需要使用命令替换了,这也是 Shell 编程中使用非常频繁的功能。


替换方式

Shell 中有两种方式可以完成命令替换,一种是反引号,一种是$()

示例


变量 命令 引号 环境 输出 字符 进程 字符串 方式 作用 只有 有效 下划线 关键 关键字 内容 原样 形式 情况 数字 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司排名 互联网与科技金融数据 北京互联网科技有限公司 互联网未来科技 互联网科技小额贷款 丰台科技园 互联网公司 互联网科技公司需要的职位 北京大学互联网科技怎么样 互联网科技公司实习生 银川新华互联网科技学校联系电话 天津腾达互联网科技有限公司 特约风豹互联网科技为什么扣费 恒生互联网科技业指数调整周期 黑云互联网科技有限公司 互联网科技手抄报图片 安徽零酒互联网科技有限公司 互联网科技大佬云集 河南商务圈互联网科技有限公司 东风日产互联网科技公司叫什么 北京瑞云互联网科技有限公司 科技互联网产品 美国互联网科技巨头监管 互联网科技论文 长亮科技 互联网金融 济南和联互联网科技有限公司 青岛中康互联网医疗科技有限公司 科技互联网的估值 移动互联网科技股 南博望互联网科技有限公司 上海旺乐尼互联网科技有限公司
0