Shell 编程学习笔记
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-04-22
Shell 变量 (1). 设定变量 Shell变量没有数据型态,像JS变量一样,除非用内置命令declare声明其数据型态.SHELL变量不用声明即可使用. 默认情况下以字符串对待.SHELL变量的命名与C语言变量命名相同,并区分大小写.取得变量值用$varname,${varname} 两种方式. 例如(anran.sh): #! /bin/bash shopt -s -o nounset #表示变量设定过才能使用.(1) myname=guojianjun #设定变量myname (2) #比较好的习惯,把字符串用单/双引号引起来“guojianjun” #=号两边不能有空格,如果右边值有空格,用引号引起来“guo jianjun” echo $myname #或者${myname},如果后面还有字符串,数字,下画线,要用{}把变量括起来,否则无法定位变量,这里也就是说只要能 定位变量就可以,如$myname/2,就工作的挺好. #如果同时#掉(1),(2),则报: ./anran.sh: line 6: myname: unbound variable #再者如果我们想显示$符号,可以用或者''''(不是双引号,否则会显示变量值,SHELL真能折腾):echo $myname ''$myname''. 除了用echo显示变量外,Bash还有一个printf(C语言的叛徒,不说它了,用到再联系) (2).取消[回收内存空间]或清空变量[不回收内存空间] 使用unset清除变量,-v 清除变量,-f清除函数,不加选择的话,尝试清除变量,或失败,再试着取消与之同名的涵数. 如:unset -v myname. 清空变量很简单 : myname= 赋空即可. (3).以前说的变量都是本地变量,即在当前shell中有效.如在父shell中设定:myname=guojianjun 执行: #! /bin/bash echo $myname 输出为空.怎样才能使子SHELL可以使用它呢,设定为环境变理:export myname=guojianjun或者declare -x myname=guojianjun (4).变量扩展 1.语法:${var-defaultvalue} 若变量存在,返回变量值,否则返回defaultvalue #! /bin/bash unset myname echo ${myname-anran} (以下用法都与1相同). 2.语法:${var:-defaultvalue} 若变量存在且不为空,返回变量值,否则返回defaultvalue 3.语法:${var:=defaultvalue} 若变量存在且不为空,返回变量值,否则给变量设定defaultvalue,并返回变量值. 4.语法:语法:${var:?erro} 若变量存在且不为空,则继续执行,否则停止执行. #! /bin/bash fn=${1:?''请提供删除的目录''} echo $fn 5.语法: ${var: 真值} 测试变量的存在性,若变量存在且不为空,则什传回真值[真值是非空字符串或数字],否则,传回空值. 6.语法:${var:startIndex} 从指定位置截取字符串到字符串结束. 7.语法:${var:startIndex:length} 从指定位置截取指定长度字符串.6,7与JAVA语言的SUBSTRING函数差不多. 有一个特殊的用法${@:2} 由2起取得后面所有的位置参数,而不是字符串长度,${@:2:2}同理. 8.语法:${#var} 传回变量值的字符串长度.对比:取得数组元素个数:${#a[@]}/${#a[*]} 9.语法:${var#style} 从左边开始,将符合样式的字符串删除(饱汉式,即找到符合的即停止,导至删除最短的). filename="/usr/share/opt" echo ${filename#/*/} #结果为share/opt 10.语法:${var##style} 同9,但是是饿汉式,删除最长的.按上列返回:opt 11.语法:${var%style} 同9,但是是从右边开始. filename="/usr/share/opt" echo ${filename#/*} #结果为/usr/share 12.语法:${var%%style} 同10,但是是从右边开始.按上列返回: 13.语法:${var/style/replace} 只替换第一个对比符合的字符串(取最长的).如果没有replace,就变成的删除. 14.语法:${var//style/replace} 只替换全部对比符合的字符串(取最长的).如果没有replace,就变成的删除. 13~14中的style如果以#开头,则表示该样式出现在变量的开头,以%开头则样式要出现在变量的结尾. 也符合了9,11一个从左边开始,一边从右边开始.SHELL有些地方还是通的. (5).命令替换 语法:varname=$(命令) 也有这样写的:`命令`(难看). bls=$(ls -l /) IFS=''n'' echo $bls wait for next... |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 虚拟机中的LINUX使用USB转串口下一篇: linux日志管理命令详解
关于Shell 编程学习笔记的所有评论