1、脚本参数传递
我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$1 $2 … $n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
[root@localhost ~]#vim test.sh #!/bin/bash echo "script name :$0" echo "first paremeter:$1" echo "second paremeter:$2" echo "thrid paremeter:$3" echo "total num of paremeter:$#" echo "$$" [root@localhost ~]#./test.sh script name :./test.sh first paremeter: second paremeter: thrid paremeter: total num of paremeter:0 31762 [root@localhost ~]#./test.sh 1 2 3 script name :./test.sh first paremeter:1 second paremeter:2 thrid paremeter:3 total num of paremeter:3 31764 [root@localhost ~]#./test.sh 1 3 script name :./test.sh first paremeter:1 second paremeter:3 thrid paremeter: total num of paremeter:2 31765
说明:
1、$1 传递到脚本中的第一个参数
2、$2 传递到脚本中的第二个参数
3、$# 传递到脚本的参数个数
4、$$ 脚本运行的当前进程ID号
5、$* 以一个单字符串显示所有向脚本传递的参数。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
6、$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
7、$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
8、$0 执行脚本的文件名
—
$* 与 $@ 区别:
相同点:都是引用所有参数。
不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 "*" 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。
[root@localhost ~]#vim test.sh #!/bin/bash echo "---\$*---" for i in "$*"; do echo $i done echo "---\$@---" for i in "$@"; do echo $i done [root@localhost ~]#./test.sh 1 2 3 ---$*--- 1 2 3 ---$@--- 1 2 3
2、函数
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。
shell中函数的定义格式如下:
[ function ] funname [()] { action; [return int;] }
说明:
1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255
举个栗子
[root@localhost ~]#cat test.sh #!/bin/bash function demo() { echo "this is a demo" } echo "start" demo echo "finish" [root@localhost ~]#bash test.sh start this is a demo finish
带有返回值得函数,demo的传入参数有两个,这个和脚本的传入参数是一样的,函数名不变化,函数里面直接使用$1,$2,,来调用传入的参数,经过计算后,将结果通过return返回给程序,通过$?来将结果显示出来。
[root@localhost ~]#cat test.sh #!/bin/bash function demo() { echo "this is a demo" let a=$1*$2 return $a } echo "start" demo 5 3 echo "finish $?" [root@localhost ~]#bash test.sh start this is a demo finish 15
函数返回值在调用该函数后通过 $? 来获得。
注意:所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用。调用函数仅使用其函数名即可。
在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数…
注意,$10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数。
3、调试
在编写shell脚本时,shell提供了一些用于调试的选项:便于发现脚本中的错误
-n 读一遍脚本的命令但不执行,用于检查脚本中的错误。
-v 一遍执行脚本,一遍将执行过的脚本命令打印到标准错误输出。
-x 提供跟踪执行信息,将执行的每一条命令和结果一次打印出来。
bash -n script.sh #检查语法,有语法错误会显示
bash -x script.sh #调试执行,会将每个语句的执行过程打印出来
bash -v script.sh
4、文件包含
先放置
–
–
–
评论前必须登录!
注册