您的位置:首页 > 其它

变量 $ ${} ${!}

2016-07-16 21:18 393 查看
1、变量的引用,当param为数组时,$param和"$param"区别

[b]$param将数组作为n个参数处理,而[b]"$param"将数组作为一个整体处理,举例:[/b][/b]

[xiluhua@vm-xiluhua][~/shell_script]$catcompare1.sh
#=======================================================================================
#/bin/bash
#auth:xiluhua
#date:20160717
#desc:
#=======================================================================================
v_list="abc"
echo"===demo1==="
echo"echo\$v_list:"
forcharin$v_list
do
echo$char
done

echo"===demo2==="
echo"echo\"\$v_list\":"
forcharin"v_list"
do
echo$char
done


2、基本参数扩展:

[xiluhua@vm-xiluhua][~]$echo$temp
100
[xiluhua@vm-xiluhua][~]$echo$temp1
结果:echonothing
这时必须使用${}
[xiluhua@vm-xiluhua][~]$echo${temp}1
1001


3、间接参数扩展:

[xiluhua@vm-xiluhua][~]$temp=100
[xiluhua@vm-xiluhua][~]$param=temp
[xiluhua@vm-xiluhua][~]$echo$param
temp
[xiluhua@vm-xiluhua][~]$echo${!param}
100


Bash4.0特性

4、大小写修改:

${PARAMETER^}将参数值的第一个字符改为大写
${PARAMETER^^}将参数值的所有字符改为大写
${PARAMETER,}将参数值的第一个字符改为小写
${PARAMETER,,}将参数值的所有字符改为小写


[xiluhua@vm-xiluhua][~/shell_script]$touchtest1.123test2.123test3.123 [xiluhua@vm-xiluhua][~/shell_script]$ll-t*.123 -rw-rw-r--.1xiluhuaxiluhua02016/07/1621:27:31test1.123 -rw-rw-r--.1xiluhuaxiluhua02016/07/1621:27:31test2.123 -rw-rw-r--.1xiluhuaxiluhua02016/07/1621:27:31test3.123  



[xiluhua@vm-xiluhua][~/shell_script]$cat2.sh
#=======================================================================================
#/bin/bash
#auth:xiluhua
#date:20160626
#desc:test
#=======================================================================================
forfilein*.123;do
mv"$file""${file^^}"
done


[xiluhua@vm-xiluhua][~/shell_script]$2.sh

[xiluhua@vm-xiluhua][~/shell_script]$ll-t*.123
-rw-rw-r--.1xiluhuaxiluhua02016/07/1621:27:31TEST1.123
-rw-rw-r--.1xiluhuaxiluhua02016/07/1621:27:31TEST2.123
-rw-rw-r--.1xiluhuaxiluhua02016/07/1621:27:31TEST3.123




5、变量名扩展:

[xiluhua@vm-xiluhua][~/shell_script]$temp1=1

[xiluhua@vm-xiluhua][~/shell_script]$temp2=2

[xiluhua@vm-xiluhua][~/shell_script]$temp3=3

[xiluhua@vm-xiluhua][~/shell_script]$echo${!temp*}
temp1temp2temp3



[xiluhua@vm-xiluhua][~/shell_script]$echo${!temp@}
temp1temp2temp3


6、字符串移除:(举例说明)

[xiluhua@vm-xiluhua][~/shell_script]$pride="IRONMANistheprideofthePEOPLE'SREPUBLICOFCHINA"

[xiluhua@vm-xiluhua][~/shell_script]$echo${pride#*}  #移除第一个空格前的内容
MANistheprideofthePEOPLE'SREPUBLICOFCHINA

[xiluhua@vm-xiluhua][~/shell_script]$echo${pride##*}  #移除最后一个空格前的内容
CHINA

[xiluhua@vm-xiluhua][~/shell_script]$echo${pride%*}  #移除最后一个空格后的内容
IRONMANistheprideofthePEOPLE'SREPUBLICOF

[xiluhua@vm-xiluhua][~/shell_script]$echo${pride%%*}  #移除最后一个空格前的内容
IRON

最常用的业务场景是提取文件名的一部分:


[xiluhua@vm-xiluhua][~/shell_script]$filename=test1.123

[xiluhua@vm-xiluhua][~/shell_script]$echo${filename##*.}  #得到文件后缀
123

[xiluhua@vm-xiluhua][~/shell_script]$echo${filename%.*}  #得到文件名
test1

[xiluhua@vm-xiluhua][~/shell_script]$filename=/home/xiluhua/test1.123

[xiluhua@vm-xiluhua][~/shell_script]$echo${filename%/*}  #得到文件目录
/home/xiluhua

[xiluhua@vm-xiluhua][~/shell_script]$echo${filename##*/}  #得到文件名称
test1.123





7、字符串搜索与替换

[xiluhua@vm-xiluhua][~/shell_script]$echo${pride}    #原文
IRONMANistheprideofthePEOPLE'SREPUBLICOFCHINA

[xiluhua@vm-xiluhua][~/shell_script]$echo${pride/the/a}  #the替换成a,仅替换第一处
IRONMANisaprideofthePEOPLE'SREPUBLICOFCHINA
您在/var/spool/mail/xiluhua中有新邮件

[xiluhua@vm-xiluhua][~/shell_script]$echo${pride//the/a}  #他和替换成a,替换所有
IRONMANisaprideofaPEOPLE'SREPUBLICOFCHINA

[xiluhua@vm-xiluhua][~/shell_script]$echo${pride/the}  #删除第一个the
IRONMANisprideofthePEOPLE'SREPUBLICOFCHINA

[xiluhua@vm-xiluhua][~/shell_script]$echo${pride//the}  #删除所有the
IRONMANisprideofPEOPLE'SREPUBLICOFCHINA


8、字符串长度

[xiluhua@vm-xiluhua][~/shell_script]$echo${#pride}
55


9、子字符串扩展

[xiluhua@vm-xiluhua][~/shell_script]$echo${pride:5}  #截取第5个字符后的字符串
MANistheprideofthePEOPLE'SREPUBLICOFCHINA

[xiluhua@vm-xiluhua][~/shell_script]$echo${pride:28:55}  #截取从28-55的字符
PEOPLE'SREPUBLICOFCHINA  


10、指定默认值

[xiluhua@vm-xiluhua][~/shell_script]$echo${pride:-"theprideofthePEOPLE'SREPUBLICOFCHINA"}
IRONMANistheprideofthePEOPLE'SREPUBLICOFCHINA

[xiluhua@vm-xiluhua][~/shell_script]$unsetpride

[xiluhua@vm-xiluhua][~/shell_script]$echo${pride:-"theprideofthePEOPLE'SREPUBLICOFCHINA"}
theprideofthePEOPLE'SREPUBLICOFCHINA


11、替换特殊字符

PID=`netstat-tpln|grep8002`;PID=${PID#*LISTEN};PID=`echo$PID|sed-s"s/\/java//g"`
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: