51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

shell 中重要的 位置变量 $0,$#, $? $$ $_ $* $@

shell 中重要的 位置变量 $0,$#, $? $$ $_ $* $@

(1) $0 表示脚本的名称

使用场景:

echo "Usage: $0 {start|stop|status|restart|force-reload}"

(2)$n 表示脚本的第n 个参数 (1,2,3,4)

0被名称占用 所以从1开始 $1 为脚本第一个参数 $2 为脚本的第二个参数

echo $1 $2 ${10} ${11}

(3) $# 表示脚本传参个数

echo $#

应用场景:控制用户传参的个数

	#!/bin/bash
	if [ $# -ne 2 ]
	then
		echo "必须输入2个参数"
		exit
	fi

(4) $? 表示上一条命令的执行结果 0为成功 非0失败

案例:

	#!/bin/bash
	yum -y install wget &>/dev/null
	[ $? -eq 0 ] && echo "wget安装成功...." || echo "wget安装失败...."

	[root@lb day01]# cat ping.sh
	#!/bin/bash
	ping -c1 -W1 $1 &>/dev/null
	[ $? -eq 0 ] && echo "$1 ping的通" || "$1 ping不通"

(5)$$ 表示获取脚本的pid

	#!/bin/bash
	echo $$ > /tmp/nginx.pid

(6)$* 获取脚本的所有参数 在循环体中加双引号把所有的参数作为一个参数

$* 和 $@ 都是 获取所有参数 (了解即可)

	[root@lb day01]# for i in "a b" c;do echo $i;done
	a b
	c
	[root@lb day01]# set -- "a b" c
	[root@lb day01]# echo $*
	a b c
	[root@lb day01]# echo $@
	a b c
	[root@lb day01]# echo "$*"
	a b c
	[root@lb day01]# echo "$@"
	a b c
	[root@lb day01]# for i in $*;do echo $i;done
	a
	b
	c
	[root@lb day01]# for i in $@;do echo $i;done
	a
	b
	c
	[root@lb day01]# for i in "$*";do echo $i;done
	a b c
	[root@lb day01]# for i in "$@";do echo $i;done
	a b
	c

$* 获取脚本的所有参数 在循环体中加双引号把所有的参数作为一个参数

$@ 获取脚本的所有参数 在循环体中加上引号把所有的参数作为独立的参数

欢迎来撩 :shell 编程从0到1

赞(0)
未经允许不得转载:工具盒子 » shell 中重要的 位置变量 $0,$#, $? $$ $_ $* $@