shell函数

注:现在是unix编程

实例:

#!/bin/sh
demon(){
  echo "这是一个shell脚本"
}
demon

注: 调用是只写函数名没有()

函数的返回值

函数的返回值只能是数字(0-255)

#!/bin/sh
demon(){
  echo "这个函数会对输入的两个数字进行加法运算"
  echo "请输入第一个数字"
  read cat1
  echo "请输入第二个数字"
  read cat2
  echo "两个数字分别为${cat1}和${cat2}"
  return $(($cat2+$cat1))
}
demon
echo "输入的两个数字的和是:$?"

注:1)函数在调用前必须定义,也就是说函数必须写在脚本的前面;

  2)函数的返回值通过$?在调用函数后获得

)函数的返回值只能是(0-255),也就是前面的demon函数输入为255和1时,会返回0,切记

函数参数

#!/bin/sh
demon(){
  echo "第1个参数是:$1"
  echo "第2个参数是:$2"
  echo "第3个参数是:$3"
  echo "第4个参数是:$4"
  echo "第5个参数是:$5"
  echo "第6个参数是:$6"
  echo "第7个参数是:$7"
  echo "第8个参数是:$8"
  echo "第9个参数是:$9"
  echo "第10个参数是:${10}"
  echo "总共有参数:$#"
  echo "作为一个参数输出所有参数:$*"
}
demon 1 2 3 4 5 6 7 8 9 10 11

输出结果:

第1个参数是:1
第2个参数是:2
第3个参数是:3
第4个参数是:4
第5个参数是:5
第6个参数是:6
第7个参数是:7
第8个参数是:8
第9个参数是:9
第10个参数是:10
总共有参数:11
作为一个参数输出所有参数:1 2 3 4 5 6 7 8 9 10 11

注: 注意第十个参数的获取方法要加{}

shell输入输出重定向

输出重定向 

如 ll > usrs 会将命令的结果输出到usrs文件中(如果文件不存在则创建,有的覆盖),可以使用>>来实现追加

输入重定向 

如 命令行输入 wc test.sh 和wc < test.sh 第一个会显示文件名,第二个不会显示文件名,因为它仅仅知道从标准输入读取内容

/dev/null

如果执行某个命令不希望在命令行显示可以直接定向到/dev/null, /dev/null是个特殊的文件写入其中的内容都会被丢弃

shell 文件包含

shell也可以包含外部脚本

引入方式有两种

1) . filename

2) source filename

注: 第一种方式.后有个空格,不能省略

被包含的文件可以没有执行的权限