目录
美元符号
$在bash中的用途
———————————————————————————————————————————-
美元符号—–$
$在bash中用途
- $ 变量替换(引用变量的内容) Variable substitution
- $ 正则表达式中的行结束符 Regular expression
- ${ } 参数替换 Parameter substitution
- $ ‘ … ‘ 引用字符串扩展 Ouoted string expansion
- $* , $@ 位置参数 Pcsitional parameters
- $ ? 退出状态码变量 Exit status variable
- $$ 进程ID变量 Process ID variable
1.1 变量替换:变量的名字就是保存变量的地方,引用变量的值就叫做变量替换。
ex:
variable1=123 echo variable1 variable1 echo $variable1 123 echo ${variable1} 123
注意:在下列情况下,变量名没有前缀$
- 变量名被声名或被赋值
- 变量被unset重置
- 变量被export导出
- 变量代表一种信号 (特殊情况)信号是发给进程的一个消息,消息可由内核or其它进程发出,作用是通知目的进程采取一系列指定动作。常见终止,例:在运行命令时,按下ctrl+C,即发出了一个用户终端的信号到当前进程。
在引用时,$的变化:
双引号,弱引用,发生变量替换。单引号,强引用,保持字面意思。
1.2正则表达式中行结束符
正则表达式处理字符串的一种强大的工具,具有自己的语法结构。大致过程:把设定的表达式和要比较的字符串进行比较,如果文本中字符串和表达式每个字符都匹配,说明匹配成功,若其中有一个不匹配的字符,说明匹配失败。
$在正则表达式中表示行结束符,例:
“abc$” 匹配行尾的abc
“^$” 匹配空行
1.3 参数替代 ${ }
前言:在上节? 中
参数替换方法(二)
如果变量未被声名或赋值,那么就替换为默认值 (三元结构)
${ parameter-default} 判断变量是否被声名,没赋值指定默认值为default
${parameter : -default} 判断是否被赋值,没有赋值指定default值给变量
例1:
echo ${ username- `whoami` } 判断username是否被声名
例2:
DEFAULT_FILENAME=generic.data
filename=${1:-$DEFAULT_FILENAME
脚本逻辑 :判断变量是否被声名or被赋值
1 #!/bin/bash 2 #variable.sh 3 # 一个变量是否被声明或设置,将会影响变量是否使用默认值 4 # 情况1:没有声明,直接使用 5 echo "username1 has not declared." 6 echo "Test1A: username1 = ${username1-`whoami`}" #有输出 7 echo "Test1A: username1 = ${username1:-`whoami`}" #有输出 8 echo 9 #情况2:声明了变量,但变量值为空null 10 username2= 11 echo "username2 has been declared,but is set ton null." 12 echo "Test2B: username2 = ${username2-`whoami`}" #无输出 13 echo "Test2B: username2 = ${username2:-`whoami`}" #有输出 14 #有输出,因为:-会比-多了一个测试条件
1.4 引用字符串扩展 ‘ … ‘(了解即可)
quote=$’/042′ 42八进制 转义到字符为“
echo $quote
“
1.5 位置参数
1.6 退出代码 $?
保持一个命令、一个脚本、一个函数的退出的状态代码
1.7 进程ID变量
保存当前运行脚本进程的ID
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/267142.html