shell变量

出处:《跟老男孩学Linux:Shell编程实战》

目录

shell中特殊位置参数变量

shell进程中的特殊状态变量

shell变量子串

shell特殊扩展变量


shell中特殊位置参数变量

位置变量作用说明
$0获取当前执行的shell脚本的文件名,如果执行脚本包含了路径,那么就包括脚本路径
$n获取当前执行的shell脚本的第n个参数,n=1..9,当n为0时表示脚本的文件名;如果n大于9,则用大括号括起来,例如{$10},接的参数以空格隔开
$#获取当前执行的shell脚本后面接的参数的总个数
$*

获取当前执行的shell脚本所有传参的参数,不加引号和$@相同;

如果给$*加上双引号,例如:"$*",则表示将所有的参数视为单个字符串,相当于"$1 $2 $3"

$@

获取当前执行的shell脚本所有传参的参数,不加引号和@*相同;

如果给$@加上双引号,例如:"$@",表示将所有的参数视为不同的独立字符串,相当于"$1" "$2" "$3" "..."。

这是将多个参数传递给其他应用程序的最佳方式,因为它会保留所有的内嵌在每个参数里的任何空白。

当"$@"和"$*"都加双引号时,两者是有区别的;都不加双引号时,两者无区别

 

shell进程中的特殊状态变量

位置变量作用说明
$?获取执行上一个指令的执行状态返回值(0为成功,非零为失败),这个变量最常用
$$获取当前执行的shell脚本的进程号(PID)
$!获取上一个在后台工作的进程的进程号(PID)
$_获取在此之前执行的命令或脚本的最后一个参数

提示:查找上述知识的方法为使用man bash命令,然后搜关键字“Special Parameters”。

 

shell变量子串

ID表达式说明
1${parameter}返回变量$parameter的内容
2${#parameter}返回变量$parameter内容的长度(按字符),也适用于特殊变量
3${parameter:offset}在变量${parameter}中,从位置offset之后开始提取子串到结尾
4${parameter:offset:length}在变量${parameter}中,从位置offset之后开始提取长度为length的子串
5${parameter#word}从变量${parameter}开头删除最短匹配的word子串
6${parameter##word}从变量${parameter}开头删除最长匹配的word子串
7${parameter%word}从变量${parameter}结尾删除最短匹配的word子串
8${parameter%%word}从变量${parameter}结尾删除最长匹配的word子串
9${parameter/pattern/string}使用string代替第一个匹配的pattern
10${parameter//pattern/string}使用string代替所有匹配的pattern

 

shell特殊扩展变量

表达式说明
${parameter:-word}

如果parameter的变量为空或未赋值,则会返回word字符串并替代变量的值

用途:如果变量未定义,则返回备用的值,防止变量为空值或因未定义而导致异常

${parameter:=word}

如果parameter的变量为空或未赋值,则设置这个变量的值为word,并返回其值。

位置变量和特殊变量不适用

用途:基本上同上一个${parameter:-word},但该变量又额外给parameter变量赋值了

${parameter:?word}

如果parameter的变量为空或未赋值,那么word字符串将被作为标准错误输出,否则输出变量的值

用途:用于捕获由于变量未定义而导致的错误,并退出程序

${parameter:+word}如果parameter的变量为空或未赋值,则什么都不做,否则word字符串将替代变量的值

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值