宁波大学教务管理系统,浮生曲,王树彤老公
$0:获取脚本的名字,如果脚本前跟着路径的话,那就获取路径加上脚本名字。 企业应用:一般在脚本最后,使用$0获取脚本的路径和名字给用户。
$n:获取脚本后的第n个参数,n大于9以后,数字需要用大括号括起来。 企业应用:脚本中,提取第n个参数。
$#:脚本后所有参数的个数。 企业应用:判断参数个数。
$*:获取shell脚本中所有的参数。所有单数是一个整体:"$1,$2,$3" $@:获取脚本的所有参数。每个参数是一个整体:"$1","$2","$3" 当需要接收脚本后所有参数,但是又不知道个数的时候,使用$*,$# 两者区别: [root@centos6-kvm3 scripts]# cat test.sh #!/bin/bash for arg in "$*" do echo $arg done echo ------ for arg1 in "$@" do echo $arg1 done echo $# [root@centos6-kvm3 scripts]# bash test.sh "i am" oldboy teacher. i am oldboy teacher. ------ i am oldboy teacher. 3 [root@centos6-kvm3 scripts]#
①$?:获取上一个命令的返回值,返回值为0,表示成功,非0,表示失败。 ②$$:获取当前执行脚本的进程号。 ③$!:获取上一个后台工作的进程的进程号。 ④$_:获取在此前执行命令或者脚本的最后一个参数。
[root@centos6-kvm3 scripts]# oldboy="i am oldboy" [root@centos6-kvm3 scripts]# echo ${oldboy} i am oldboy ${#变量}:获取变量字符个数。 [root@centos6-kvm3 scripts]# echo ${#oldboy} 11 [root@centos6-kvm3 scripts]# echo ${oldboy}|wc -l 11 计算变量字符个数方法2: [root@centos6-kvm3 scripts]# expr length "$oldboy" 11 计算变量字符个数方法3: [root@centos6-kvm3 scripts]# echo $oldboy| awk '{print length }' 11 [root@centos6-kvm3 scripts]# echo $oldboy| awk '{print length($0) }' 11 [root@centos6-kvm3 scripts]# echo $oldboy| awk '{print length($1) }' 1 获取变量第二个参数后参数: [root@centos6-kvm3 scripts]# echo ${oldboy:2} am oldboy [root@centos6-kvm3 scripts]# echo ${oldboy:2:2} am [root@centos6-kvm3 scripts]#
${参数#字符串}:匹配开头,删除最短匹配。 [root@centos6-kvm3 scripts]# oldboy=abcabc12345abcabc [root@centos6-kvm3 scripts]# echo ${oldboy} abcabc12345abcabc [root@centos6-kvm3 scripts]# echo ${oldboy#a*c} 12345abcabc ${参数##字符串}:匹配开头,删除最长匹配。 [root@centos6-kvm3 scripts]# echo ${oldboy##a*c} abc ${参数%字符串}:匹配结尾,删除最短匹配。 [root@centos6-kvm3 scripts]# echo ${oldboy%a*c} abcabc12345abc ${参数%%字符串}:匹配结尾,删除最长匹配。 [root@centos6-kvm3 scripts]# echo ${oldboy%%a*c} [root@centos6-kvm3 scripts]#
${变量/part/string}:使用string替换part第一个匹配项。 [root@centos6-kvm3 scripts]# oldboy="i am oldboy oldboy" [root@centos6-kvm3 scripts]# echo ${oldboy/oldboy/oldgirl} i am oldgirl oldboy ${变量//part/string}:使用string替换part所有匹配项。 [root@centos6-kvm3 scripts]# echo ${oldboy//oldboy/oldgirl} i am oldgirl oldgirl [root@centos6-kvm3 scripts]#
result=${变量:-word}:当变量为空时候,将word赋值给result。冒号可以省略。 [root@centos6-kvm3 scripts]# result=${test:-unset} [root@centos6-kvm3 scripts]# echo $result unset [root@centos6-kvm3 scripts]# echo $test 企业应用: [root@centos6-kvm3 scripts]# find ${path:-/tmp} -name "*.log" -mtime +7| xargs rm -f [root@centos6-kvm3 scripts]#
result=${变量:=word},变量为空时候,work复制给result,同时复制给变量。 [root@centos6-kvm3 scripts]# result=${test:=unset} [root@centos6-kvm3 scripts]# echo ${result} unset [root@centos6-kvm3 scripts]# echo ${test} unset [root@centos6-kvm3 scripts]#
${变量:?word}:当变量为空时候,提示word。 [root@centos6-kvm3 scripts]# result=${test1:?变量为空} -bash: test1: 变量为空 [root@centos6-kvm3 scripts]# echo $result unset [root@centos6-kvm3 scripts]# echo $test1 [root@centos6-kvm3 scripts]# test1=oldboy [root@centos6-kvm3 scripts]# result=${test1:?变量为空} [root@centos6-kvm3 scripts]# echo $result oldboy [root@centos6-kvm3 scripts]#
${变量:+word}:如果前面变量为空,什么不做,如果不为空,进行覆盖。 [root@centos6-kvm3 scripts]# result1=${test2:+wordk} [root@centos6-kvm3 scripts]# echo ${result1} [root@centos6-kvm3 scripts]# echo ${test2} [root@centos6-kvm3 scripts]# test2=2 [root@centos6-kvm3 scripts]# result1=${test2:+wordk} [root@centos6-kvm3 scripts]# echo ${result1} wordk [root@centos6-kvm3 scripts]# echo ${test2} 2 [root@centos6-kvm3 scripts]#
转自:https://www.cnblogs.com/cuiyongchao007/p/12791368.html
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
网友评论