Linux Shell编程(6)——变量替换
变量的名字是它的值保存的地方。引用它的值称为变量替换。
$
让我们仔细地区别变量和变量的值。如果variable1是一个变量的名字,那么$variable1就是引用这个变量的值――即这个变量它包含的数据。如果只有变量名出现(即指没有前缀$),那就可能是在1)声明一个变量或是在给这个变量赋值。2)声明废弃这个变量,3)导出(exported)变量,4)或是在变量指示的是一种信号的特殊情况。(参考例子 29-5)。变量赋值可以使用等于号(=),比如:var1=27。也可在read命令和在一个循环的情况下赋值,比如:for var2 in 1 2 3。
在一个双引号(" ")里的变量引用不会禁止变量替换。所以双引号被称为部分引用,有时也称为"弱引用"。而在一个单引号里(' ')的变量替换是被禁止的,变量名只被解释为普通的字面意思。所以单引号被称为"全局引用",有时也被称为强引用。从第五章可得到更多的细节讨论。.
注意$variable实际上只是${variable}的简单的简写形式。在某些场合使用$variable形式会引起错误,这时你可能需要使用${variable}的形式了。
例子变量赋值与替换
#!/bin/bash # Variables: 赋值和替换 a=375
hello=$a #-------------------------------------------------------------------------
# =号的左右两边都不能有空白符.
# 如果有一个空白符会怎么样? # 如果用 "VARIABLE =value",
# ^
#+ 脚本会以为"VARIABLE"是一个命令并且此命令带了一个参数"=value"。 # 如果用 "VARIABLE= value",
# ^
#+ 脚本会以为"value"是一个命令,
#+ 并且把环境变量"VARIABLE"赋为空值:""。
#------------------------------------------------------------------------- echo hello # 没有引用变量,只是输出字符串 "hello". echo $hello
echo ${hello} # 这句和上面的一句一样 echo "$hello"
echo "${hello}" echo hello="A B C D"
echo $hello # A B C D
echo "$hello" # A B C D
# 正如你所看到的:echo $hello和echo "$hello"产生不同的输出。
# ^ ^
# 把变量引起来会保留空白字符. echo echo '$hello' # $hello
# ^ ^
# 在单引号中的变量引用会被禁止,
#+ 字符"$"会仅仅被认为是一个普通的字符,而不是变量的前缀. # 注意不同引用的不同效果. hello= # Setting it to a null value.
echo "\$hello (null value) = $hello"
# 注意具有null值的变量不等同于废弃(unset)此变量
#+ 虽然最后的结果都是一样的(看下面的). # -------------------------------------------------------------- # 在同一行里用空白字符隔开为多个变量赋值是可以的。
#
# 警告:这可能减少可读性,并且可能是不可移植的。 var1=21 var2=22 var3=$V3
echo
echo "var1=$var1 var2=$var2 var3=$var3" # 在老版本的sh中这可能会引起问题 # -------------------------------------------------------------- echo; echo numbers="one two three"
# ^ ^
other_numbers="1 2 3"
# ^ ^
# 如果给变量赋的值中有空白字符,引号是必须的。
#
echo "numbers = $numbers"
echo "other_numbers = $other_numbers" # other_numbers = 1 2 3
echo echo "uninitialized_variable = $uninitialized_variable"
# 未初始化的变量具有null值 (即是没有值).
uninitialized_variable= # 声明,但没有初始化它 --
#+ 这就好像上面一样给它设置一个null 值
echo "uninitialized_variable = $uninitialized_variable"
# 它仍然是null值. uninitialized_variable=23 # 赋值
unset uninitialized_variable # 销毁变量.
echo "uninitialized_variable = $uninitialized_variable"
# 结果仍然是null值.
echo exit 0
Linux Shell编程(6)——变量替换的更多相关文章
- Linux Shell编程、变量、控制语句
为什么要学习Shell编程 1)Linux运维工程师在进行服务器集群管理时,需要编写Shell程序来进行服务器管理. 2)对于JavaEE和Python程序员来说,工作的需要,你的老大会要求你编写一些 ...
- Linux —— Shell编程之变量赋值和引用
Linux的shell编程是一种非常成熟的编程语言,它支持各种类型的变量.有三种主要的变量类型:环境变量.内部变量和用户变量. 环境变量(environment variable)是系统环境的一部分, ...
- linux shell编程之变量和bash配置文件(第一篇)
编程语言有两类 强类型:如C语言.数据具有其特定的类型,先声明定义后才能使用.数据运算时必须符合类型要求(如不能把字符串类型数据直接与整型数据做算数运算) 弱类型:如shell.数据默认为字符型,不用 ...
- shell编程:变量替换
定义变量:$ var_1="I love you, Do you love me" 输出变量:$ echo $var_1 打印结果:I love you, Do you love ...
- Linux学习——shell编程之变量
shell编程之变量:Linux shell编程基础中的变量. 包括Bash变量的分类和各变量的详细使用,如:用户自定义变量.环境变量.语系变量.位置参数变量和预定义变量. 1:什么是Bash变量? ...
- linux —— shell 编程(文本处理)
导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 基本文本处理 流编辑器sed aw ...
- linux —— shell 编程(编程语法)
导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 再识变量 函数 条件语句 循环语句 ...
- linux shell编程总结
linux shell编程总结 本周学习了unix/linux shell编程,参考的是<LINUX与UNIX Shell 编程指南>,David Tansley著:徐焱,张春萌等译,由机 ...
- Linux Shell编程参考大全
本文记录Linux Shell编程中常用基本知识,方便快速入门以及查询使用. 本文主要分为以下几个部分: 一.Shell中的变量 任何编程语言中,有关变量的定义,作用范围,赋值等都是最最基础的知识. ...
- linux shell 编程参考
#!/bin/bash my_fun() { echo "$#" } echo 'the number of parameter in "$@" is '$(m ...
随机推荐
- Android 6.0 Changes
原文链接:http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html 伴随着新特性和功能,Andr ...
- mssql 创建触发器
MS-SMS里创建触发器: 首先右击表内的触发器文件夹图标 然后输入触发器创建指令,一下案例:(添加创建时间) 创建: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFI ...
- HTML5常用标签
section 板块,用于划分页面的不同区域或者划分文章里不同的节 ↓ header 页面头部或者板块section头部 ↓ footer 页面底部或者section底部 ↓ nav 导航(包含 ...
- 使用了hibernate时候乱码问题
在配置文件的url地址最后加上characterEncoding=utf-8
- (转载)[FFmpeg]使用ffmpeg从各种视频文件中直接截取视频图片
你曾想过从一个视频文件中提取图片吗?在Linux下就可以,在这个教程中我将使用ffmpeg来从视频中获取图片. 什么是ffmpeg?What is ffmpeg? ffmpeg是一个非常有用的命令行程 ...
- >/dev/null 2>&1 这句话的含义
1表示标准输出,2表示标准错误输出 2>&1表示将标准错误输出重定向到标准输出,这样,程序或者命令的正常输出和错误输出就可以在标准输出输出(也就是一起输出). 一般来讲标准输出和标准错误 ...
- shell脚本学习之if..else用法
一 简介 1 字符串判断 str1 = str2 当两个串有相同内容.长度时为真 str1 != str2 当串str1和str2不等时为真 -n str1 当串的长度大于0时为真(串非空) - ...
- IOS 中得runloop 详细解释
1.Runloop基础知识- 1.1 字面意思 a 运行循环 b 跑圈 - 1.2 基本作用(作用重大) a 保持程序的持续运行(ios程序为什么能一直活着不会死) b 处理app中的各种事件(比如触 ...
- Unity Manual 用户手册
unity3d 文档的中文网址: http://game.ceeger.com/Manual/
- 【转】UILabel、UITextView自适应得到高度
原文:http://blog.csdn.net/xcysuccess3/article/details/8331549 在iOS中,经常遇到需要根据字符串的内容动态指定UILabel,UITextVi ...