1、变量的引用,当param为数组时,$param 和"$param"区别
$param将数组作为n个参数处理,而"$param"将数组作为一个整体处理,举例:
[xiluhua@vm-xiluhua][~/shell_script]$ cat compare1.sh #======================================================================================= #/bin/bash #auth: xiluhua #date: 20160717 #desc: #======================================================================================= v_list="a b c " echo "=== demo1 ===" echo "echo $v_list:" for char in $v_list do echo $char done echo "=== demo2 ===" echo "echo "$v_list":" for char in "v_list" do echo $char done
2、基本参数扩展:
[xiluhua@vm-xiluhua][~]$ echo $temp 100 [xiluhua@vm-xiluhua][~]$ echo $temp1 结果:echo nothing 这时必须使用${} [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]$ touch test1.123 test2.123 test3.123 [xiluhua@vm-xiluhua][~/shell_script]$ ll -t *.123 -rw-rw-r--. 1 xiluhua xiluhua 0 2016/07/16 21:27:31 test1.123 -rw-rw-r--. 1 xiluhua xiluhua 0 2016/07/16 21:27:31 test2.123 -rw-rw-r--. 1 xiluhua xiluhua 0 2016/07/16 21:27:31 test3.123
[xiluhua@vm-xiluhua][~/shell_script]$ cat 2.sh #======================================================================================= #/bin/bash #auth: xiluhua #date: 20160626 #desc: test #======================================================================================= for file in *.123; do mv "$file" "${file^^}" done
[xiluhua@vm-xiluhua][~/shell_script]$ 2.sh [xiluhua@vm-xiluhua][~/shell_script]$ ll -t *.123 -rw-rw-r--. 1 xiluhua xiluhua 0 2016/07/16 21:27:31 TEST1.123 -rw-rw-r--. 1 xiluhua xiluhua 0 2016/07/16 21:27:31 TEST2.123 -rw-rw-r--. 1 xiluhua xiluhua 0 2016/07/16 21:27:31 TEST3.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*} temp1 temp2 temp3 或 [xiluhua@vm-xiluhua][~/shell_script]$ echo ${!temp@} temp1 temp2 temp3
6、字符串移除:(举例说明)
[xiluhua@vm-xiluhua][~/shell_script]$ pride="IRON MAN is the pride of the PEOPLE'S REPUBLIC OF CHINA" [xiluhua@vm-xiluhua][~/shell_script]$ echo ${pride#* } #移除第一个空格前的内容 MAN is the pride of the PEOPLE'S REPUBLIC OF CHINA [xiluhua@vm-xiluhua][~/shell_script]$ echo ${pride##* } #移除最后一个空格前的内容 CHINA [xiluhua@vm-xiluhua][~/shell_script]$ echo ${pride% *} #移除最后一个空格后的内容 IRON MAN is the pride of the PEOPLE'S REPUBLIC OF [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} #原文 IRON MAN is the pride of the PEOPLE'S REPUBLIC OF CHINA [xiluhua@vm-xiluhua][~/shell_script]$ echo ${pride/the/a} #the替换成a,仅替换第一处 IRON MAN is a pride of the PEOPLE'S REPUBLIC OF CHINA 您在 /var/spool/mail/xiluhua 中有新邮件 [xiluhua@vm-xiluhua][~/shell_script]$ echo ${pride//the/a} #他和替换成a,替换所有 IRON MAN is a pride of a PEOPLE'S REPUBLIC OF CHINA [xiluhua@vm-xiluhua][~/shell_script]$ echo ${pride/the} #删除第一个the IRON MAN is pride of the PEOPLE'S REPUBLIC OF CHINA [xiluhua@vm-xiluhua][~/shell_script]$ echo ${pride//the} #删除所有the IRON MAN is pride of PEOPLE'S REPUBLIC OF CHINA
8、字符串长度
[xiluhua@vm-xiluhua][~/shell_script]$ echo ${#pride} 55
9、子字符串扩展
[xiluhua@vm-xiluhua][~/shell_script]$ echo ${pride:5} #截取第5个字符后的字符串 MAN is the pride of the PEOPLE'S REPUBLIC OF CHINA [xiluhua@vm-xiluhua][~/shell_script]$ echo ${pride:28:55} #截取从28-55的字符 PEOPLE'S REPUBLIC OF CHINA
10、指定默认值
[xiluhua@vm-xiluhua][~/shell_script]$ echo ${pride:-"the pride of the PEOPLE'S REPUBLIC OF CHINA"} IRON MAN is the pride of the PEOPLE'S REPUBLIC OF CHINA [xiluhua@vm-xiluhua][~/shell_script]$ unset pride [xiluhua@vm-xiluhua][~/shell_script]$ echo ${pride:-"the pride of the PEOPLE'S REPUBLIC OF CHINA"} the pride of the PEOPLE'S REPUBLIC OF CHINA
11、替换特殊字符
PID=`netstat -tpln|grep 8002`;PID=${PID#*LISTEN};PID=`echo $PID | sed -s "s//java//g"`