shell脚本文件()内容:
#!/bin/bashecho "脚本文件名:$0"echo "参数1:$1"echo "参数2:$2"echo "参数3:$3"
执行脚本:
chmod +x t.sh #赋予脚本文件可执行权限./t.sh a 1 #执行脚本文件并向其传递2个参数:脚本文件名:./t.sh参数1:a参数2:1参数3:./t.sh a 1 b c #执行脚本文件并向其传递4个参数:脚本文件名:./t.sh参数1:a参数2:1参数3:b
脚本文件中获取调用者传递的参数用:$n
还有以下特殊情况:
$#
表示传递到脚本的参数个数$*
表示以一个单字符串显示所有向脚本传递的参数。$$
表示脚本运行的当前进程ID号$!
表示后台运行的最后一个进程的ID号$@
与$*
相同,依次返回每个参数。$-
表示Shell使用的当前选项,与set命令功能相同。$?
表示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
#!/bin/bashecho "参数个数:$#"echo "\$*显示的:$*"echo "\$@显示的:$@"echo "\$\$显示的:$$"echo "\$!显示的:$!"echo "\$-显示的:$-"echo "\$?显示的:$?"
执行:
./t.sh 1 2 a b参数个数:4$*显示的:1 2 a b$@显示的:1 2 a b$$显示的:6252$!显示的:$-显示的:hB$?显示的:0
$@
和$*
的不同:
#!/bin/bashfor i in "$*"; do echo $idonefor i in "$@"; do echo $idone
执行:
./t.sh 1 2 a b1 2 a b12ab
注意在使用$*
和$@
时要加引号"
。
参数中有特殊字符的处理,用\转义或用""或’'包裹:
[root@xjb tmp]# cat s.sh #!/bin/bashfor i in "$@"; do echo $idone[root@xjb tmp]# ./s.sh "sadf" 'da"f' "'d)" d)-bash: syntax error near unexpected token `)'[root@xjb tmp]# ./s.sh "sadf" 'da"f' "'d)" d\)sadfda"f'd)d)