💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
一)Shell特殊变量 $0 获取当前执行的shell脚本的文件名 $n 获取当前执行的shell脚本的第n个参数,n为1-9 $* 获取当前shell的所有参数,如果给$*加上双引号,例如"$*" 表示将所有参数视为单个字符串,相当于"$1$2$3" $#获取当前shell脚本后面接的参数的个数 $@ 将所有参数$1 $2 $3当作单个个体 [root@server01 ~]# for i in "$*";do echo $i;done I AM handsome oldby [root@server01 ~]# for i in "$@";do echo $i;done I AM handsome oldby [root@server01 ~]# for i in $*; do echo $i;done I AM handsome oldby [root@server01 ~]# for i;do echo $i;done ----》不加in,相当于$@ I AM handsome oldby 案例1: [ $# -ne 2 ] && { #<==如果执行脚本传参的个数不等于2, echo "muse two args" #<==则给用户提示正确的用法。 exit 1 #<==由于不满足要求,因此退出脚本,返回值为1。 } 2)Shell进程中的特殊变量 $? 特殊变量功能,获取执行命令后获取返回值 [root@server01 ~]# pwd /root [root@server01 ~]# echo $? 0 [root@server01 ~]# ls /root anaconda-ks.cfg install.log install.log.syslog rsync_server.sh shell_scripts [root@server01 ~]# echo $? 0-------------》返回0,表示上一个命令的执行时成功的 [root@server01 ~]# cd /test -bash: cd: /test: No such file or directory [root@server01 ~]# echo $? 1-------------》上一个命令执行失败 [root@server01 ~]# mkddir /test -bash: mkddir: command not found [root@server01 ~]# echo $? 127 [root@server01 ~]# rm -rf / rm: it is dangerous to operate recursively on `/' rm: use --no-preserve-root to override this failsafe [root@server01 ~]# echo $? 1 案例2: [root@server01 ~]# cd /etc/ [root@server01 etc]# tar zcf /opt/service.tar.gz ./services [root@server01 etc]# echo $?---》检查备份后$?是否为0 0 [root@server01 ~]# sh a.sh & [1] 12149 [root@server01 ~]# cat /tmp/a.pid 12149 [root@server01 ~]# kill -USR2 `cat /tmp/a.pid` -bash: kill: (12149) - No such process [1]+ Done sh a.sh [root@server01 ~]# ps -ef|grep a.sh root 12253 12099 0 05:55 pts/1 00:00:00 grep a.sh