link 发表于 2018-8-29 06:13:27

shell特殊变量 字符截取

  shell特殊变量
  变量含义
  $0获取当前执行的shell脚本的脚本名字,如果脚本带有路径,那么就包括路径和脚本名称
  $n获取当前执行的shell脚本中的第N个参数.但n=1..9时,但n为0时表示脚本的文件名,如果n大于9,那么就需要用大括号括起来,如${10}。
  $#获取当前shell命令行中参数的总个数
  "$*"所有的位置参数(作为单个字符串) 获取当前shell脚本的所有参数,将所有的的命令行的参数视为一个字符串。
  "$@"所有的位置参数(每个都作为独立的字符串) 获取当前shell脚本的所有参数,将所有的的命令行的每个参数视为独立的字符串。
  ${#*}传递到脚本中的命令行参数的个数
  ${#@}传递到脚本中的命令行参数的个数
  $?获取执行上一个指令的返回值(0为成功值,非0为失败)返回值
  $$获取当前执行脚本的进程ID(PID)
  $-传递到脚本中的标志(使用set)
  $_在此之前执行的命令或脚本的最后一个参数
  $!运行在后台的最后一个作业的进程ID(PID)
  * 必须被引用起来,          否则默认为"$@".
  dirname$0    #获取当前脚本路径
  basename$0   #获取当前脚本名称
  $* 和 $@ 的区别
  $* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。
  但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。
  #############################################################
  变量子串
  表达式含义
  ${#string}                   $string的长度
  ${string:position}         $string中,从位置$position开始提取子串
  ${string:position:length}    $string中,从位置$position开始提取长度为$length的子串
  ${string#substring}          从变量$string的开头,删除最短匹配$substring的子串
  ${string##substring}         从变量$string的开头,删除最长匹配$substring的子串
  ${string%substring}          从变量$string的结尾,删除最短匹配$substring的子串
  ${string%%substring}         从变量$string的结尾,删除最长匹配$substring的子串
  ${string/substring/replacement}      使用$replacement,来代替第一个匹配的$substring
  ${string//substring/replacement}       使用$replacement,代替所有匹配的$substring
  ${string/#substring/replacement}
  如果$string的前缀匹配$substring,      那么就用$replacement来代替匹配到的$substring
  ${string/%substring/replacement}
  如果$string的后缀匹配$substring,      那么就用$replacement来代替匹配到的$substring

页: [1]
查看完整版本: shell特殊变量 字符截取