Linux shell 参数展开

本文详细介绍了Linux Shell中的参数展开,包括替换运算符如${varname:-word}、${varname:=word}、${varname:?message}和${varname:+word},以及模式匹配运算符如${variable#pattern}、${variable##pattern}、${variable%pattern}和${variable%%pattern}。通过实例解析了各种运算符的用法和功能,帮助读者掌握Shell脚本中处理变量的有效方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

reminder="Time to go to the dentist ! "   【将值存储在reminder中】

sleep  120                              【等待两分钟】

echo  $reminder                   【显示信息】


替换运算符

            运算符                                     替换

           ${varname:-word}                 如果varname存在且非null,返回其值;否则,返回word。 

                                                             用途:如果变量未定义,则返回默认值。

                                                            范例:如果count未定义,则${count:-0}的值为0。

           ${varname:=word}                如果varname存在且不是null,则返回它的值;否则,设置它为word,并返回其值。

                                                            用途:如果变量未定义,则设置变量为默认值。

                                                            范例:如果count未被定义,则${count:=0}设置count为。

           ${varname:?message}       如果varname存在且非null,则返回它的值;否则,显示varname:message,并退出当前的命令或脚本。

                                                            省略message会出现默认信息parameter  null  or  not  set。注意,在交互式Shell下不需要退出

                                                            (在不同的Shell间会有不同的行为,用户需自行注意)。

                                                           用途:为了捕捉由于变量未定义所导致的错误。

                                                           范例:${count:?"undefined!"}将显示count:undefined!,且如果count未定义,则退出。

          ${varname:+word}               如果varname存在且非null,则返回word;否则,返回null。

                                                           用途:为测试变量的存在。

                                                           范例:如果count已定义,则${count:+1}返回1(也就是"真")


模式匹配运算符

             运算符                                           替换

         ${variable#pattern}                如果模式匹配于变量值的开头处,则删除匹配的最短部分,并返回剩下的部分。

       例:${path#/*/}                          结果:tolstoy/mem/long.file.name


       例:${variable##pattern}        如果模式匹配于变量值的开头处,则删除匹配的最长部分,并返回剩下的部分。

       例:${path##/*/}                       结果:long.file.name


       例:${varible%pattern}           如果模式匹配于变量值的结尾处,则删除匹配的最短部分,并返回剩下的部分。

       例:${path%.*}                         结果:/home/tolstoy/mem/long.file


       例:${variable%%pattern}    如果模式匹配于变量值的结尾处,则删除匹配的最长部分,并返回剩余部分。

       例:${path%%.*}                    结果:/home/tolstoy/mem/long





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值