首页 > 其他 > 详细

Shell 参数置换

时间:2014-03-20 10:15:55      阅读:379      评论:0      收藏:0      [点我收藏+]


1、单独的${parameter},可以拓展变量

my_id=${USER}-on-${HOSTNAME}
echo "$my_id"
#root-on-localhost.localdomain
echo
echo "Old \$PATH = $PATH"
#Old $PATH = /usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PATH=${PATH}:/opt/sh
echo "New \$PATH = $PATH"
#New $PATH = /usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/opt/sh


2、${parameter-default},${parameter:-default} 使用变量默认值

两种用法基本相同,在变量未设置的时候都能够使用默认变量

var1=1
#var2 is unset
var3=3;
echo ${var1-$var3} " " ${var2-$var3}
#1   3
echo ${var1:-$var3} " " ${var2:-$var3}
#1   3

两者的区别在于当变量声明但是未赋值的时候,前者不会发生置换,而后者会

var1=1
var2=    #var2 is declared but null
var3=3;
echo ${var1-$var3} " " ${var2-$var3}
#1
echo ${var1:-$var3} " " ${var2:-$var3}
#1   3


3、${parameter=default},${parameter:=default} 设置变量为默认值

在变量未声明或者赋值的时候使用默认值,两者区别和上面类似


4、${parameter+default},${parameter:+default}

这个与上面相反,如果变量被设置了就用默认值,否则就使用空字符串。应该能够用到的地方很少吧。


5、${parameter?err_msg},${parameter:?err_msg}

如果变量未设置就打印错误信息并且退出脚本(exit 1)

可以用来检测是否输入位置变量

$./usage-message.sh
:${1?"Usage: $0 ARGUMENT"}
#usage-message.sh: line 1: 1: Usage: tmp.sh ARGUMENT
#=====================================================
$./usage-message.sh 123
:${1?"Usage: $0 ARGUMENT"}
#./usage-message.sh: line 1: :123: command not found
echo "command-line parameter = \"$1\" "
#command-line parameter = "123"



以上例子参考 Advanced Bash-Scripting Guide》.

Shell 参数置换,布布扣,bubuko.com

Shell 参数置换

原文:http://callmepeanut.blog.51cto.com/7756998/1379847

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!