ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

bash shell 学习日记(6)特殊字符(五)之美元符号$

2022-06-08 18:04:23  阅读:235  来源: 互联网

标签:username1 username2 变量 variable1 echo shell bash whoami 特殊字符


目录

美元符号

$在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

标签:username1,username2,变量,variable1,echo,shell,bash,whoami,特殊字符
来源: https://www.cnblogs.com/liu-gc/p/16356669.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有