参数展开(parameter expansion)

参数展开是shell变量在程序中使用的过程。在shell中变量使用$varname 来引用变量。

变量名称可以括在花括号里(${variable}),括号里面可以增加一些额外语法,执行额外功能。

替换运算符(:)

           运算符(:)是可选的,如果省略冒号,则将每个定义中的‘存在且非null' 修改为 ’存在‘

运算符用途说明
${varname:-default}如果变量未定义,则返回默认值如果varname存在且非null,则返回其值;否则返回default默认值
${varname:=default}如果变量未定义,则设置为默认值如果varname存在且非null,则返回其值;否则设置变量为default,并返回其值
${varname:?msg}为了捕捉由于变量未定义所导致的错误,显示提示信息

如果varname存在且非null,则返回其值;否则显示varname:msg,并退出当前的命令或者脚本。省略msg,会显示默认信息‘parameter null or not set’。

交互式shell不需要退出

${varname:+msg}为测试变量的存在如果varname存在且非null,则返回msg;否则返回null


模式匹配运算符(# %)

            # 从开头开始匹配
            % 从尾部开始匹配
            
eg: path=/home/tost/mem/long.file.name               

运算符用途说明
${varname#pattern}从变量值的开头处匹配,则删除匹配的最短部分,并返回剩下的部分例:${path#/*/},返回 tost/mem/long.file.name
${varname##pattern}变量开头处匹配,匹配最长部分,并返回剩下部分例:${path##/*/},返回 long.file.name
${varname%pattern}变量尾部匹配,匹配最短部分,并返回剩下部分例:${path%.*},返回 /home/tost/mem/long.file
${varname%%pattern}
变量尾部匹配,匹配最长部分,并返回剩下部分

例:${path%%.*},返回 /home/tost/mem/long

位置参数(positional parameter)

         shell脚本的命令行参数,也表示shell函数内的函数参数。
        位置参数名称以单个整数来命名,当这个整数大于9时,使用花括号{}括起来。
       
         
变量说明
$#传递给shell脚本或函数的参数总数
$* $@一次表示所有的命令行参数
“$*”将所有命令行中参数视为单个字符串。等同于“ $1 $2 $3 ...”
"$@"将所有命令行参数的每个视为单独字符串。等同于 “$1” "$2" "$3" 


特殊参数

   POSIX 内置Shell变量
  
变量说明
#目前参数个数
@传递给当前进程的命令行参数,在双引号内,每个参数会生成一个字符串
*传递给当前进程的命令行参数,双引号内,所有参数生成一个字符串
-(连字号)shell选项
前一个命令的退出状态
$shell程序的名称
0(零)shell程序名称
最近一个后台命令的进程编号,可通过wait命令以供稍后使用
ENV一旦引用,则仅用于交互式Shell中,$ENV的值是可展开的参数。结果应为要读取和在启动时要要执行的一个文件的完整路径名称。这是一个XSI必需的变量
HOME用户根登陆目录
IFS内部的字段分隔符
LANGlocale默认值,其他LC_*变量会覆盖其值
LC_ALL当前locale的名称;会覆盖LANG与其他LC_*变量
LC_COLLATE用来排序字符的当前locale名称
LC_CTYPE模式匹配期间,字符类别的当前locale
LC_MESSAGES当前语言的名称
LINENO刚执行过的函数或者脚本内的行编号
NLSPATH在$LC_MESSAGES(XSI)所给定的信息语言里,信息目录的位置
PATH 
PPID父进程的进程编号
PS1主要命令提示字符串,默认为 $
PS2行继续提示字符串 默认 >
PS4以set -x 设置的执行跟踪的提示字符串 默认 +
PWD当前工作目录
  
         
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值