shell 5参数

1. shell传递参数

我们可以在执行shell脚本时,向脚本传递参数。

$nn代表数字。$0表示执行的脚本名称,$1表示第1个参数,$2是第2个参数.
shell默认支持9个参数,使用shift可以传递更多的参数。
$#,${#*},${#@} 传递到脚本的参数个数
$$脚本运行的当前进程的ID号
$!后台运行的最后一个进程的ID号
$? 显示上个命令的执行情况。0表示没有错误,其他任何值表明有错误。
$@一个单字符显示所有向脚本传递的参数
$*以一个单字符显示所有向脚本传递的参数
$-显示shell使用的当前选项,与set命令功能相同
${*:1:3},${*:$#}表示多个参数
``` #shell #!/bin/sh echo "shell脚本名称:" $0 #shell脚本名称: 829test.sh echo "第一个参数:" $1 #第一个参数: 3 echo "第二个参数:" $2 #第二个参数: 4 echo "脚本的个数:" $# #脚本的个数: 2 echo "当前进程ID:" $$ #当前进程ID: 6673 echo "后台运行的最后一个进程ID:" $! #后台运行的最后一个进程ID: echo "上个命令的执行结果:" $? #上个命令的执行结果: 0 echo "参数作为字符串显示*:" $* "$*" #参数作为字符串显示*: 3 4 3 4 echo "参数作为字符串显示@:" $@ "$@" #参数作为字符串显示@: 3 4 3 4 ```

2. (@与)*区别

#!/bin/sh
#$@ vs $* 

func1(){
	echo "$@"
	for d in "$@";do
		echo $d
	done
}
func1 1 2 '3 4' '"5 6" 7'

func2(){
	echo $@
	for d in $@;do
		echo $d
	done
}
func2 1 2 '3 4' '"5 6" 7'

func3(){
	echo "$*"
	for d in "$*";do
		echo $d
	done
}
func3 1 2 '3 4' '"5 6" 7'

func4(){
	echo $*
	for d in $*;do
		echo $d
	done
}
func4 1 2 '3 4' '"5 6" 7'
1 2 '3 4' '"5 6" 7' $* $@
没有双引号
$*和$@一样,都是按空格分隔打印参数
1
2
3
4
"5
6"
7
1
2
3
4
"5
6"
7
双引号
"$*"一行打印全部参数
"$@"挨个输出参数
1 2 3 4 "5 6" 7 1
2
3 4
"5 6" 7
# 3. 注意 shell脚本中传递的参数如果包含空格,应该对该参数使用单引号或者双引号。
脚本参数:Tom Cat参数:"Tom Cat"
#!/bin/sh
echo "传入参数:$*"
echo "第一个参数:$1"
echo "参数个数:$#"

传入参数:Tom Cat
第一个参数:Tom
参数个数:2

传入参数:Tom Cat
第一个参数:Tom Cat
参数个数:1
原文地址:https://www.cnblogs.com/csj2018/p/9552774.html