Shell - 简明Shell入门02 - 变量(Variable)
示例脚本及注释
#!/bin/bash
v1=test-variable_123 # 全局变量
v2=12345
v3='This is a test!' # 赋值语句使用单引号或双引号可以包含空格
v4="Test again!"
testfun()
{
local v5=67890 # 局部变量
echo "局部变量:" $v5
}
echo $v1 # “$<变量名>”方式使用变量
echo $v2
echo $v3
echo ${v4}v4 # “${<变量名>}”方式使用变量,使用{}可以帮助解释器识别变量边界
testfun #调用自定义函数
v6="run unset sample"
echo "取消变量之前:" $v6
unset v6 # 取消自定义变量
echo "取消变量之后:" $v6
echo '$(命令): ' $(date) # 返回命令执行后所输出的结果
echo '$((算术表达式)): ' $((20+3*3)) # 返回双括号内算术运算的结果
echo "双引号括起来的变量:$v3"
echo '单引号括起来的变量:$v3'
# ### 变量(Variable)
# - Shell变量只有字符串类型。
# - Shell变量名称与变量值没有长度限制。
# - 利用系统已定义的环境变量(特殊变量和环境变量),可以简洁高效地获取特定信息。
#
# ### 变量分类
# - 自定义变量
# - 特殊变量
# - 环境变量
#
#
# ### 自定义变量类型
# - 局部变量:使用local修饰符,代码块或函数内可见。
# - 全局变量:不适用任何修饰符,全局范围可见。
# - 只读变量: 使用readonly命令来修饰,变量的值不能被改变。
#
#
# ### 自定义变量
# 定义形式:<变量名>=<赋值语句>
# 注意:
# - “=”两边不能加空格;如果赋值语句包含空格时,必须使用单引号或双引号。
# - 使用readonly命令来修饰的自定义变量,变量的值不能被改变。
# - 已定义赋值的变量,可以被重新定义赋值;
# 变量名规则:
# - 首个字符必须为字母(a-z,A-Z)。
# - 中间不能有空格,可以使用下划线(_)。
# - 不能使用标点符号。
# - 不能使用bash里的关键字(可用help命令查看保留关键字)。
# 生命周期:
# - 定义的变量只存在于Shell脚本运行期间,脚本结束后,变量也就自动消失。
# - 可以通过export命令将定义的变量共享给同一个shell的其他程序使用。
# - 如果想让自定义变量永久生效,需要修改配置文件(对所有用户生效的/etc/profile文件,或者,对单一用户生效的用户目录下的.bash_profile文件)。
#
#
# ### 取消自定义变量
# 取消形式:unset <变量名>
#
#
# ### 常用特殊变量
# $0 当前shell脚本的名称
# $n 当前shell脚本的第n个参数,$1是第一个参数,$2是第二个参数,${10}是第十个参数
# $* 当前shell脚本的所有参数(不包括脚本本身)
# $# 当前shell脚本的参数个数(不包括脚本本身)
# $$ 当前shell脚本的PID
# $? 上一个指令的返回值
#
# $(命令) 返回命令执行后所输出的结果
# $((算术表达式)) 返回双括号内算术运算的结果
#
#
# ### 常用环境变量
# - 使用env或export命令获取当前常用的环境变量。
# - 使用“set |grep ^[a-Z] |grep [=]”命令显示当前所有变量(包括自定义变量和环境变量)。
#
#
# ### 使用变量
# 使用形式:$<变量名>
# 或者,${<变量名>},使用{}可以帮助解释器识别变量边界,非必须但推荐。
#
#
# ### 特别注意
# - 双引号:可以有变量(会发生变量替换);可以出现转义字符;可以嵌套双引号;
# - 单引号:原样输出任何字符;不会发生变量替换;不能嵌套单引号;
# - 反引号:位于键盘的Tab键的上方、数字1键的左方,具备命令替换的作用;
Shell - 简明Shell入门02 - 变量(Variable)的更多相关文章
- Shell - 简明Shell入门
本文以示例和注释的方式,对Shell编程的基本知识点进行了总结和回顾,所有脚本均已做了基本的调试和验证. Shell - 简明Shell入门 01 - 第一个脚本 脚本的定义.执行方法以及echo命令 ...
- Shell - 简明Shell入门01 - 第一个脚本(HelloShell)
示例脚本及注释 #!/bin/bash echo "hello shell!" # 打印字符串"hello shell!" echo "Date: & ...
- Shell - 简明Shell编程
本文是对Shell脚本编程的总结和回顾,所有涉及的脚本均已做了基本的调试和验证. [toc] 测试环境信息 [root@CentOS7 ~]# uname -a Linux CentOS7 3.10. ...
- Shell - 简明Shell入门13 - 用户输入(UserInput)
示例脚本及注释 1 - arguments #!/bin/bash if [ -n "$1" ];then # 验证参数是否传入 echo "The first para ...
- Shell - 简明Shell入门15 - 调试(Debug)
示例脚本及注释 #!/bin/bash -x for filename in t1 t2 t3 do touch $filename.txt echo "Create new file: $ ...
- Shell - 简明Shell入门14 - 操作符(Operator)
示例脚本及注释 #!/bin/bash echo "No code, just some comments." # ### 通配符 # * 代表任意(0个或多个)字符 # ? 代表 ...
- Shell - 简明Shell入门11 - 调用脚本(CallTheScript)
示例脚本及注释 主脚本: CallTheScript.sh #!/bin/bash . ./11-subscript.sh # 调用其他脚本;注意点号"."和文件路径之间有一空格; ...
- Shell - 简明Shell入门07 - 数组(Array)
示例脚本及注释 #!/bin/bash test0=() # 定义数组 test1=(a b c d e f) # 定义数组 test2=( # 定义数组 'A?' "BB!" C ...
- Shell - 简明Shell入门04 - 判断语句(If)
示例脚本及注释 #!/bin/bash var=$1 # 将脚本的第一个参数赋值给变量var if test $var # test - check file types and compare va ...
随机推荐
- 初识python函数
一.函数 1.什么是函数 函数是对功能或者动作的封装 2.函数的语法和定义 def 函数名(): 函数体 调用: 函数名() 3.关于函数的返回值 return : 返回 1.当程序没写过retur ...
- 2019.01.01 bzoj3625:小朋友和二叉树(生成函数+多项式求逆+多项式开方)
传送门 codeforces传送门codeforces传送门codeforces传送门 生成函数好题. 卡场差评至今未过 题意简述:nnn个点的二叉树,每个点的权值KaTeX parse error: ...
- 2018.12.18 bzoj2242: [SDOI2011]计算器(数论)
传送门 数论基础题. 对于第一种情况用快速幂,第二种用exgcdexgcdexgcd,第三种用bsgsbsgsbsgs 于是自己瞎yyyyyy了一个bsgsbsgsbsgs的板子(不知道是不是数据水了 ...
- idea下启动tomcat时,打印的日志中文乱码
idea2018.2+tomcat8+java8+win10 异常:将编码方式全都修改为UTF-8后,且tomcat的VM启动参数中配置了:-Dfile.encoding=UTF-8.导致控制台日志打 ...
- ACM-ICPC 2018 徐州赛区网络预赛 G Trace(逆向,两颗线段树写法)
https://nanti.jisuanke.com/t/31459 思路 凡是后面的轨迹对前面的轨迹有影响的,可以尝试从后往前扫 区间修改需要push_down,单点更新所以不需要push_up(用 ...
- 利用url传多个参数
刚开始接触jsp,比较偏向于用button标签的onclick方法进行页面的跳转.但是关于页面跳转的各种问题真是叫人头大,以下记录,仅仅为自己以后查看. Qone 用url传参的时候遇到中文怎么办 编 ...
- es6函数的新语法
函数的默认值 function(x,y=10){ //赋予了y就有了默认值为10,如果y赋值了,就回被覆盖,否则就是默认值10 变量已经有默认值了,所以不用再次用let或者const声明啦 }
- Ubuntu 12.10 安装VirtualBox增强功能
原文链接:http://fengbaoxp.iteye.com/blog/1871825 Ubuntu 12.10 Desktop 首先,通过VirtualBox菜单(设备->安 ...
- 强大的DataGrid组件[1]
说明:DataGrid组件是Silverlight数据组件中最为常用并且是功能最为强大的数据组件.因此,对开发者而言,深入了解其特性是十分有必要的.本文先介绍该组件的基本特性,接着通过几个简单实例来说 ...
- webService之helloword(java)rs
webservice之rs(helloworld) 1.pom.xml文件 <dependencies> <!-- 使用CXF RS开发 --> <dependency& ...