余苏明的幻想乡

第二 shell变量学习笔记

第二 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字符串将代替变量的值