bash特殊变量和变量展开

发布于 2023-07-29  495 次阅读


特殊变量

  • $0:获取当前执行的Shell脚本的文件名,如脚本中包含路径,则输出也包括路径
  • $n:获取当前执行的Shell脚本的第n个参数值,如n>9,则需要使用用大括号,如${10},各参数间用空格进行分隔
  • $#:获取当前执行的Shell脚本传入参数的总个数
  • $* $@:这两个都代表所有位置参数。但是,当它们被双引号包围时,它们的行为就不同了。"$*" 会将所有参数视为一个整体,而 "$@" 会将每个参数分别处理。
  • $-: 表示当前 shell 的选项
  • $?:获取上一个命令或脚本的执行状态值
  • $$:获取当前执行的Shell的进程号(PID)
  • $!:获取上一个在后台工作的进程的进程号
  • $_:获取在些之前执行的命令或脚本的最后一个参数

变量展开

  • ${var}:返回${var}的内容
  • ${!var}: ! 用于间接引用,意味着 "获取名为 $var 值的变量的值"
  • ${!var*}: 展开开结果为所有以var为前缀的变量的名字
  • ${#var}:返回${var}的字符长度
  • ${var:offset}:返回${var}从位置offset之后开始提取字符至结束
  • ${var:offset:length}:返回${var}从offset之后,提取长度为length的字符
  • ${var#word}:返回从${var}开头开始删除最短匹配的word子符串
  • ${var##word}:返回从${var}开头开始删除最长匹配的word子符串
  • ${var%word}:返回从${var}结尾开始删除最短匹配的word子符串
  • ${var%%word}:返回从${var}结尾开始删除最长匹配的word子符串
  • ${var/oldstring/newstring}:使用newstring替换第一个匹配的字符oldstring
  • ${var//oldstring/newstring}:使用newstring替换所有匹配的字符oldstring
  • ${var:-word}:如果变量var的值为空或未赋值,则将word做为返回值,常用于防止变量为空或未定义而导致的异常
  • ${var:=word}:如果变量var的值为空或未赋值,则将word赋值给var并返回其值。
  • ${var:?word}:如果变量var的值为空或未赋值,则将word做为标准错误输出,否则则输出变量的值,常用于捕捉因变量未定义而导致的错误并退出程序
  • ${var:+word}:如果变量var的值为空或未赋值,则什么都不做,否则word字符将替换变量的值

如果省略冒号,则运算符仅检测变量是否未赋值

届ける言葉を今は育ててる
最后更新于 2023-07-29