变量 $ ${} ${!}

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"`

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值