Shell传参的两种方法

一、$1、$2...$n接收参数

这个方法比较简单,直接上代码:

脚本:

#/bin/bash/

echo $1,$2,$3

执行命令:

bash test.sh 1 2 3

执行结果:

1,2,3

二、getopts

先上代码:

脚本1(参数不跟值):

#/bin/bash/

while getopts "ab" opt; do 
	case $opt in 
		a) 
			echo "this a is a"
	    	;;   
		b)
			echo "this b is b"
			;;  
		\?)
			echo "error option!"
			;;
		esac
done
执行命令及结果:

root@ubuntu:/test# bash test.sh -a
this a is a
root@ubuntu:/test# bash test.sh -b
this b is b
root@ubuntu:/test# bash test.sh -ab
this a is a
this b is b
root@ubuntu:/test# bash test.sh -c
test.sh: illegal option -- c
error option!
root@ubuntu:/test# 

脚本二(参数有值):

#/bin/bash/

while getopts "a:b:" opt; do 
	case $opt in 
		a) 
			echo "this a is $OPTARG"
	    	;;   
		b)
			echo "this b is $OPTARG"
			;;  
		\?)
			echo "error option!"
			;;
		esac
done

执行命令及结果:

root@ubuntu:/test# bash test.sh -a
this a is a
root@ubuntu:/test# bash test.sh -b
this b is b
root@ubuntu:/test# bash test.sh -ab
this a is a
this b is b
root@ubuntu:/test# bash test.sh -c
test.sh: illegal option -- c
error option!
root@ubuntu:/test# 

说明:

 ":":如果某个选项(option)后面出现了冒号(":"),则表示这个选项后面可以接参数(即一段描述信息DESCPRITION)。也就是说,参数后面有冒号就可以接参数,否则不识别。

附:shell脚本里面传参还有第三种getopt,这种方法依然会将参数$1、$2...$n排序。

你可能感兴趣的:(Shell传参的两种方法)