您的位置:首页 > 运维架构 > Shell

shell特殊变量   字符截取

2015-10-09 11:43 549 查看
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

本文出自 “奋斗吧” 博客,请务必保留此出处http://lvnian.blog.51cto.com/7155281/1701156
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: