本帖最后由 风精灵 于 2025-12-4 09:51 编辑

自定义变量
自定义变量是用户在脚本中定义的变量,用于存储特定的值或信息。这些变量的作用范围通常限于定义它们的脚本或当前的 shell 会话。关于自定义变量的特点如下:
1. 变量名的定义
变量名定义需要注意以下几点:
l 变量名由数字、字母、下划线组成
l 必须以字母或者下划线开头
l 不能使用Shell里的关键字(如,$,#,?等,通过help命令可以查看保留关键字)
2. 变量的赋值
赋值“=”左右不能有空格。
变量值可以加单引号、双引号、或者不加引号, 如果变量值包含了空格、或tab等空白符号,那么就必须使用引号包围起来。其中加单引号的变量值,输出时,直接将变量值当做一串字符串输出,不关心变量值中是否存在变量和命令。而加双引号的变量值,输出时会先解析里面的变量和命令,按照解析后的结果进行输出。
变量值可以是一个命令执行的结果,使用反引号和$()的方式,可以将命令执行结果赋值给变量。
3. 变量的使用
使用一个定义过的变量,只要在变量名前面加美元符号$即可,变量名可以使用{ }包围起来,也可不使用{ }
举例说明(为了方便,我们直接在shell环境终端进行举例演示变量的使用,不再写入脚本,其与在脚本中使用方法一致):
1)变量值无空格
var=value
使用echo输出变量varecho $var或者echo ${var},如图:
图片1.png
也可以加上单引号或者双引号:
var='value'var="value"
图片2.png
2)变量值有空格
var='value 0'var="value 0"
图片3.png
3)将命令执行结果赋值给变量
首先建立一个test.txt文件,输入内容为“my test!!”
图片4.png
使用反引号方式包括命令“cat test.txt”,将test.txt中内容赋予变量var
图片5.png
使用$()方式赋值给var
图片6.png
4)变量中引用变量或者命令的情况
var0=123
使用单引号定义var1的值:var1='var0 =${var0}'
使用双引号定义var1的值:var2="var0 =${var0}"
看执行结果:
图片7.png
可以看出var1的值直接当做字符串输出,而var2的值,经过解析变量中的变量var0之后进行才输出。
4. 变量的修改
变量的修改就比较简单了,直接给定义后的变量二次赋值就可以了。
图片8.png
5. 变量的删除
删除一个定义过的变量,使用unset命令。
图片9.png
6. 将变量设置为只读变量
也可以将变量设置为只读模式,不允许修改,使用readonly命令。设置为只读变量后,不能用unset删除变量。如果还是用该变量,需要重启新的终端操作。
图片10.png
可以看到使用readonly命令之后,在此修改var变量,没有修改成功。
7. 字符串与引号
在定义变量的时候会使用到很多引号和字符串之间的特性,这里做简单介绍。
字符串是Shell编程中最常见的变量,没有空格的字符串变量可以用单引号或者双引号引起来,也可以不用引号。但是当变量是存在空格的字符串时就需要使用单引号或者双引号,否则操作系统将会把空格后面的字符串识别成命令。
图片11.png
1)单引号
单引号对字符串的限制如下:
l 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
l 单引号中的字符串中不能出现单独的一个单引号,但可以成对出现,起到字符串拼接的作用
l 单引号会让Shell忽略所有的特殊字符
图片12.png
2) 双引号
双引号对字符串的限制如下:
双引号中可以存在变量
双引号中可以出现特殊字符
双引号只会忽略一部分特殊字符
图片13.png
3)反引号
反引号与单双引号的功能不同,单双引号是用来定义变量的,而反引号是用来命令替换的。
命令替换是指Shell能够将一个命令的标准输出插入在一个命令行中的任何位置。
图片14.png
8. 将命令结果复制给变量
在日常使用中将命令的结果赋值给变量是非常常见的,对需要获取命令结果的变量内容赋值常见的有两种方法。
第一种是:变量=`命令`
elf@ubuntu:~$ A=`ls`
图片15.png
第二种是:变量=$(命令)
elf@ubuntu:~$ B=$(ls)
图片16.png
这里需要注意的是,在变量名前加$可以取得该变量的值,使用echo命令可以显示变量的值,$A${A}的写法不同,但效果是一样的。
当变量后面连接有其他字符的时候,必须给变量加上大括号{},例如$dbname_tname就要改成${dbname}_tname
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Powered by Discuz! X3.5  © 2001-2013 Comsenz Inc.