10.2.2 变量的取用与设置:echo, 变量设置规则, unset

简介: 10.2.2 变量的取用与设置:echo, 变量设置规则, unset

变量的取用: echo

变量的取用就如同上面的范例,利用 echo 就能够读出,只是需要在变量名称前面加上 $ ,或者是以 ${变量} 的方式来取用都可以。


例题:请在屏幕上面显示出您的环境变量 HOME 与 MAIL:答: echo $HOME 或者是echo ${HOME} , echo $MAIL 或者是 echo ${MAIL}

每一种 shell 的语法都不相同~在变量的使用上,bash 在你没有设置的变量中强迫去 echo 时,它会显示出空的值。 在其他某些 shell 中,随便去 echo 一个不存在的变量,它是会出现错误讯息的。


变量的设置规则


变量与变量内容以一个等号“=”来链接,如下所示: “myname=VBird”


等号两边不能直接接空白字符,如下所示为错误: “myname = VBird”或“myname=VBirdTsai”


变量名称只能是英文字母与数字,但是开头字符不能是数字,如下为错误:“2myname=VBird”


变量内容若有空白字符可使用双引号“"”或单引号“'”将变量内容结合起来,但


双引号内的特殊字符如 $ 等,可以保有原本的特性,如下所示: “var="lang is$LANG"”则“echo $var”可得“lang is zh_TW.UTF-8”


单引号内的特殊字符则仅为一般字符 (纯文本),如下所示: “var='lang is$LANG'”则“echo $var”可得“lang is $LANG”


可用跳脱字符“ \ ”将特殊符号(如 [Enter], $, \, 空白字符, '等)变成一般字符,如:“myname=VBird\ Tsai”


在一串指令的执行中,还需要借由其他额外的指令所提供的信息时,可以使用反单引号“ 指令 ”或 “$(指令)”。特别注意,那个 ` 是键盘上方的数字键 1 左边那个按键,而不是单引号! 例如想要取得核心版本的设置: “version=$(uname -r)”再“echo$version”可得“3.10.0-229.el7.x86_64”


若该变量为扩增变量内容时,则可用 "$变量名称" 或 ${变量} 累加内容,如下所示:“PATH="$PATH":/home/bin”或“PATH=${PATH}:/home/bin”


若该变量需要在其他子程序执行,则需要以 export 来使变量变成环境变量: “exportPATH”


通常大写字符为系统默认变量,自行设置变量可以使用小写字符,方便判断。


取消变量的方法为使用 unset :“unset 变量名称”例如取消 myname 的设置: “unsetmyname”。

子程序就是在目前的shell的情况下,去启用另一个新的shell,新的那个shell就是子程序。在一般的状态下,父程序的自订变量是无法在子程序内使用的。但是通过 export 将变量变成环境变量后,就能够在子程序下面应用了。

每个 Linux 都能够拥有多个核心版本,且几乎 distribution 的核心版本都不相同。以 CentOS7.1 (未更新前) 为例,他的默认核心版本是 3.10.0-229.el7.x86_64 ,所以核心模块目录在/lib/modules/3.10.0-229.el7.x86_64/kernel/ 内。 也由于每个 distributions 的这个值都不相同,但是我们却可以利用 uname -r 这个指令先取得版本信息。所以,就可以通过上面指令当中的内含指令 $(uname -r) 先取得版本输出到 cd ... 那个指令当中,就能够顺利的进入目前核心的驱动程序所放置的目录。


其实上面的指令可以说是作了两次动作,亦即是:


1. 先进行反单引号内的动作“uname -r”并得到核心版本为 3.10.0-229.el7.x86_64


2. 将上述的结果带入原指令,故得指令为:“cd /lib/modules/3.10.0-229.el7.x86_64/kernel/”


例题:在变量的设置当中,单引号与双引号的用途有何不同? 答:单引号与双引号的最大不同在于双引号仍然可以保有变量的内容,但单引号内仅能是一般字符 ,而不会有特殊符号。我们以下面的例子做说明:假设您定义了一个变量, name=VBird ,现在想以 name 这个变量的内容定义出 myname 显示 VBird its me 这个内容,要如何订定呢?


> [dmtsai@study ~]$ name=VBird > [dmtsai@study ~]$ echo $name > VBird >[dmtsai@study ~]$ myname="$name its me" > [dmtsai@study ~]$ echo $myname > VBirdits me > [dmtsai@study ~]$ myname='$name its me' > [dmtsai@study ~]$ echo $myname >$name its me

相关文章
|
8月前
|
Perl
在 `awk` 脚本中初始化变量
在 `awk` 脚本中初始化变量
95 2
|
Shell
在Bash中检查变量是否为空的几种方法
在Bash中检查变量是否为空的几种方法
1322 0
在Bash中检查变量是否为空的几种方法
|
13天前
|
Shell
Makefile文件中,两个 \$ 的变量变量\$\$Xxx 与一个\$的变量\ $Xxx的区别
在 `Makefile` 中,`\$` 用于变量替换,单个 `\$`(如 `\$Xxx`)引用 Makefile 变量,双 `\$`(如 `\$\$Xxx`)传递给 shell 引用环境变量。`\$Xxx` 替换为 Makefile 变量值,`\$\$Xxx` 保留为 shell 变量。
43 2
|
8月前
|
Shell Perl
在awk中,`-v` 参数用于从命令行导入环境变量或定义自定义变量
在awk中,`-v` 参数用于从命令行导入环境变量或定义自定义变量
501 1
|
Shell 索引
shell脚本变量详解(自定义变量、环境变量、变量赋值、变量运算、变量内容替换)
shell变量 shell变量是指用一个特定的字符串去表示不固定的内容 1.变量的类型 1.1自定义变量 一般情况下不怎么使用环境变量,如果需要在其他文件中引入某个文件的变量则在脚本最开始的位置使用source 或者. 执行下该脚本即可
2916 0
shell脚本变量详解(自定义变量、环境变量、变量赋值、变量运算、变量内容替换)
|
存储 Shell
Shell 变量使用(环境变量、预定义变量、位置变量、自定义变量的区别)
Shell 变量使用(环境变量、预定义变量、位置变量、自定义变量的区别)
140 0
Ansible 自定义变量与 role 默认变量的合并方法
如果你遇到 failed to combine variables, expected dicts but got a 'NoneType' and a 'dict' 这样的报错,你可以看看本文。
344 0
|
Shell Linux 开发工具
Shell变量、系统预定义变量$HOME、$PWD、$SHELL、$USER、自定义变量、特殊变量$n、$#、$*、$@、$?、env看所有的全局变量值、set看所有变量
Shell变量、系统预定义变量$HOME、$PWD、$SHELL、$USER、自定义变量、特殊变量$n、$#、$*、$@、$?、env看所有的全局变量值、set看所有变量
Shell变量、系统预定义变量$HOME、$PWD、$SHELL、$USER、自定义变量、特殊变量$n、$#、$*、$@、$?、env看所有的全局变量值、set看所有变量
|
Shell
Shell数组变量定义-获取-拼接-删除
Shell数组变量定义-获取-拼接-删除
163 0
|
搜索推荐 Shell
bash 变量跟随#*=,##*=的含义
今天看项目的某个打包脚本,里面有这么一段写法... 刚看完的时候,我真的一脸茫然~~~
135 0