第二 shell变量学习笔记
@(shell脚本)[学习]
[toc]
shell中特殊且重要的变量
shell中的特殊位置参数变量
位置变量 | 作用说明 |
---|---|
\$0 | 获取当前执行的shell脚本的文件名,如果执行脚本包含了路径,那么就包括脚本路径 |
\$n | 获取当前脚本的第n个参数值,如果n大于9,则用大括号括起来,例如\${ 10 } |
\$# | 获取当前执行的shell脚本后面接的参数的总个数 |
\$* | 获取当前shell脚本所有传参的参数 |
\$@ | 获取当前shell脚本所有传参的参数 |
Note: \$与\$@不加引号作用相同.都加双引号则有区别.
“\$“相当于”\$1 \$2 \$3”
“\$@”相当于”\$1” “\$2” “\$3”
shift
命令为将位置参数左移一位
shell进程中特殊状态变量
位置变量 | 作用说明 |
---|---|
\$? | 获取执行上一个命令的执行状态返回值( 0为成功,非零为失败 )常用 |
\$$ | 获取当前执行的shell脚本的进程号( PID ),这个不常用 |
\$! | 获取上一个在后台工作的进程的PID |
\$_ | 获取在此之前执行的命令或脚本的最后一个参数(相当于快捷键Esc+. ) |
Shell变量子串知识及实践
Shell变量子串介绍
ID | 表达式 | 说明 |
---|---|---|
1 | \${ parameter } | 返回变量的内容 |
2 | \${ #parameter } | 返回变量内容的长度 |
3 | \${ parameter:offset } | 从位置offset之后开始提取子串到结尾 |
4 | \${ parameter:offset:length } | 从位置offset之后开始提取长度为length子串 |
5 | \${ parameter#word } | 从开头开始删除最短匹配的word子串 |
6 | \${ parameter##word } | 从开头开始删除最长匹配的word子串 |
7 | \${ parameter%word } | 从结尾开始删除最短匹配的word子串 |
8 | \${ parameter%%word } | 从结尾开始删除最长匹配的word子串 |
9 | \${ parameter/pattern/string } | 使用string代替第一个匹配的pattern |
10 | \${ parameter//pattern/string } | 使用string代替所有匹配的pattern |
Note: # ## % %% 都是从开头或结尾匹配,如果中间出现符合的,但开头或结尾不符合也是无法匹配到的。即,不会出现截取掉中间部分的情况
Shell特殊扩展变量
表达式 | 说明 |
---|---|
${parameter:-word} | 如果parameter的变量值为空或未赋值,则会返回word字符串并代替变量的值.并不会改变parameter的值 |
${parameter:=word} | 如果parameter的变量值为空或未赋值,则设置这个变量为word.位置变量和特殊变量不适用.基本同上一个表达式,但该变量额外给parameter变量赋值了 |
${parameter:?word} | 如果parameter的变量值为空或未赋值,那么word字符串将被作为标准错误输出,否则输出变量的值 |
${parameter:+word} | 如果parameter的变量值为空或未赋值,则什么都不做,否则word字符串将代替变量的值 |