shell函数

shell函数

死循环

whlie :
do
    语句体
done

shell函数

  1. 什么时候用到函数
  • 执行的功能类似
  • 根据实际需求 ,进行设置
  1. shell函数定义格式
function 函数名()
{
    
}

  1. 调用shell函数
  • 函数名
  1. 函数参数传递
function test()
{
    echo "$0"
    echo "$1"
    echo "$2"
    echo "${10}"
    echo "hello worid"
}
test 1 2 3 4 5 6 7 8 9 34
  • 分析:当参数作为shell函数传递时,当在函数里面接收n>=10个参数时,要加上${n};
  • $0不是test,而是shell文件本身
  • 函数里面的$1与函数外面的$1不相同,但是函数里面的$0与函数外面的$0相同
function sum()
{
    num1=$1
    num2=$2
    let value=num1+num2
    return $value
}
sum 1 2
echo "sum=$?"
sum 2 3
echo "sum=$?"

  • 结果为: sum=3,sum=5
  1. 分析:函数如果是return出来的结果,我们用$?接收,$?是接收最后运行的一次脚本.
  2. 如果return后面的值>255,那么函数运行完之后用$?接收,$?=value%256
  3. 怎么接收return出来的值比255大?问题解决之道:使用echo返回出来,函数外使用变量接收,value= 函数名,从而value进行操作
  4. 实际上echo是临时保存函数的结果集
function test()
{
    echo 513
}
value=`test`
echo "test函数的返回值${value}"
  • shell函数总结:
  1. function函数可写可不写
  2. shell 函数可以有return,也可以没有return
  3. 如果是return出来的结果必须要用$?接收
  4. 如果是echo保存的结果集,必须要用value=test取结果接收
  5. 函数里面可以嵌套,可以内嵌创建函数
a()
{
  b()
  {
      
  }
  
  b
    
}
a
a()
{
    
  b()
  {
    echo "==b=="
  }
  b
    
}
a
a()
{
    
  b()
  {
    echo "==b=="
  }
  
    
}
a
b

6.条件函数

a()
{
  value=9
  if [ $value -eq 9 ]
  then
  b()
  {
    echo "==b=="
  }
  else
  c()
  {
    echo "==c=="
  }
    
}
a
b
  • 结果为==b==
  • 分析:函数b和函数c在什么情况下可以调用? 先运行函数a,因为a中有函数b和c的实现.在if条件成立时,实现函数b的定义,其他情况下,实现函数c的定义

你可能感兴趣的:(shell函数)