Linux shell編程學習實例與參數分析(四)

第六章 shell函數

1.定義函數
funcation name()
{
   command1
   ....
}

函數名()
   {
   command1
   ...
   }
eg.shell

#!/bin/bash
#hellofun
function hello()
{
echo "hello,today is `date`"
return 1
}
bash

2.函數調用
#!/bin/bash
#hellofun
function hello()
{
echo "hello,today is `date`"
return 1
}
echo "now going to the function hello"
hello
echo "back from the function"

因此調用函數只須要在腳本中使用函數名就能夠了。ide

3.參數傳遞
像函數傳遞參數就像在腳本中使用位置變量$1,$2...$9函數

4.函數文件
函數能夠文件保存。在調用時使用". 函數文件名"(.+空格+函數文件名)
如:
hellofun.sh
#!/bin/bash
#hellofun
function hello()
{
echo "hello,today is `date`"
return 1
}
命令行

func.sh
#!/bin/bash
#func
. hellofun.sh
echo "now going to the function hello"
echo "Enter yourname:"
read name
hello $name
echo "back from the function"
get

[test@szbirdora 1]$ sh func.sh
now going to the function hello
Enter yourname:
hh
hello,hh today is Thu Mar 6 15:59:38 CST 2008
back from the function
it

5.檢查載入函數 set
刪除載入函數 unset 函數名io

6.函數返回狀態值 return 0、return 1function

7.腳本參數的傳遞
shift命令
shift n 每次將參數位置向左偏移nclass

#!/bin/bash
#opt2
usage()
{
echo "usage:`basename $0` filename"
}
totalline=0
if [ $# -lt 2 ];then
    usage
fi
while [$# -ne 0]
do
    line=`cat $1|wc -l`
    echo "$1 : ${line}"
    totalline=$[$totalline+$line]
    shift                               #   $# -1
done
echo "-----"
echo "total:${totalline}"

[test@szbirdora 1]$ sh opt2.sh myfile df.out
myfile : 10
df.out : 4
-----
total:14


8.getopts命令
得到多個命令行參數
getopts ahfvc OPTION   --從ahfvc一個一個讀出賦值給OPTION.若是參數帶有:則把變量賦值給:前的參數--:只能放在末尾。
該命令能夠作得到命令的參數
#!/bin/bash
#optgets
ALL=false
HELP=false
FILE=false
while getopts ahf OPTION
do
   case $OPTION in
    a)
      ALL=true
      echo "ALL is $ALL"
      ;;
    h)
      HELP=true
      echo "HELP is $HELP"
      ;;
    f)
      FILE=true
      echo "FILE is $FILE"
      ;;
    \?)
      echo "`basename $0` -[a h f] file"
      ;;
    esac
done

[test@szbirdora 1]$ sh optgets.sh -a -h -m
ALL is true
HELP is true
optgets.sh: illegal option -- m
optgets.sh -[a h f] file

getopts表達式:
while getopts p1p2p3... var
   do
    case var in
    ..)
    ....
   esac
done
若是在參數後面還須要跟本身的參數,則須要在參數後加: 若是在參數前面加:表示不想將錯誤輸出 getopts函數自帶兩個跟蹤參數的變量:optind,optarg optind初始值爲1,在optgets處理完一次命令行參數後加1 optarg包含合法參數的值,即帶:的參數後跟的參數值

相關文章
相關標籤/搜索