欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Shell函數(shù)的7種用法介紹

 更新時(shí)間:2014年11月28日 14:53:55   投稿:junjie  
這篇文章主要介紹了Shell函數(shù)的7種用法介紹,本文講解了在shell文件內(nèi)部定義函數(shù)并引用、返回值、函數(shù)輸出、向函數(shù)傳遞參數(shù)、全局變量與局部變量等內(nèi)容,需要的朋友可以參考下

1. 在shell文件內(nèi)部定義函數(shù)并引用:

復(fù)制代碼 代碼如下:

[~/shell/function]# cat factorial.sh
#!/bin/bash
function factorial
{
factorial=1
for (( i=1;i <= $1;i++ ))
        do
        factorial=$[ $factorial * $i ]
        done
echo $1的階乘是:$factorial
}
echo '程序名':$0,用于求階乘
factorial $1
[~/shell/function]# ./factorial.sh 10

程序名:./factorial.sh,用于求階乘
10的階乘是:3628800

2.返回值

函數(shù)返回碼是指函數(shù)最后一條命令的狀態(tài)碼,可以用于函數(shù)返回值
使用return命令手動指定返回值:

復(fù)制代碼 代碼如下:

[~/shell/function]# cat return.sh
#!/bin/bash
function fun1 {
  read -p "enter a: " a
  echo -n "print 2a: "
  return $[ $a * 2 ]
}
fun1
echo "return value $?"
[~/shell/function]# ./return.sh
enter a: 100
print 2a: return value 200

由于shell狀態(tài)碼最大是255,所以當(dāng)返回值大于255時(shí)會出錯(cuò)。

復(fù)制代碼 代碼如下:

[~/shell/function]# ./return.sh
enter a: 200
print 2a: return value 144

3.函數(shù)輸出

為了返回大于255的數(shù)、浮點(diǎn)數(shù)和字符串值,最好用函數(shù)輸出到變量:

復(fù)制代碼 代碼如下:

[~/shell/function]# cat ./fun_out.sh
#!/bin/bash
function fun2 {
  read -p "enter a: " a
  echo -n "print 2a: "
  echo $[ $a * 2 ]
}
result=`fun2`
echo "return value $result"
[~/shell/function]# ./fun_out.sh    
enter a: 400
return value print 2a: 800

4.向函數(shù)傳遞參數(shù)(使用位置參數(shù)):

復(fù)制代碼 代碼如下:

[~/shell/function]# cat ./parameter.sh
#!/bin/bash
if [ $# -ne 3 ]
then
    echo "usage: $0 a b c"
    exit
fi
fun3() {
    echo $[ $1 * $2 * $3 ]
}
result=`fun3 $1 $2 $3`
echo the result is $result
[~/shell/function]# ./parameter.sh  1 2 3
the result is 6
[~/shell/function]# ./parameter.sh  1 2
usage: ./parameter.sh a b c

5.全局變量與局部變量

默認(rèn)條件下,在函數(shù)和shell主體中建立的變量都是全局變量,可以相互引用,當(dāng)shell主體部分與函數(shù)部分擁有名字相同的變量時(shí),可能會相互影響,例如:

復(fù)制代碼 代碼如下:

[~/shell/function]# cat ./variable.sh   
#!/bin/bash
if [ $# -ne 3 ]
then
    echo "usage: $0 a b c"
    exit
fi
temp=5
value=6
echo temp is: $temp
echo value is: $value
fun3() {
    temp=`echo "scale=3;$1*$2*$3" | bc -ql`  
    result=$temp
}
fun3 $1 $2 $3
echo "the result is $result"
if [ `echo "$temp > $value" | bc -ql` -ne 0 ]
then
    echo "temp is larger"
else
    echo "temp is still smaller"
fi
[~/shell/function]# ./variable.sh  12 3 2
temp is: 5
value is: 6
the result is 72
temp is larger

在這種情況下,在函數(shù)內(nèi)部最好使用局部變量,消除影響。

復(fù)制代碼 代碼如下:

[~/shell/function]# cat ./variable.sh
#!/bin/bash
if [ $# -ne 3 ]
then
    echo "usage: $0 a b c"
    exit
fi
temp=5
value=6
echo temp is: $temp
echo value is: $value
fun3() {
    local temp=`echo "scale=3;$1*$2*$3" | bc -ql`  
    result=$temp
}
fun3 $1 $2 $3
echo "the result is $result"
if [ `echo "$temp > $value" | bc -ql` -ne 0 ]
then
    echo "temp is larger"
else
    echo "temp is still smaller"
fi
[~/shell/function]# ./variable.sh  12 3 2
temp is: 5
value is: 6
the result is 72
temp is still smaller

6.向函數(shù)傳遞數(shù)組變量:

復(fù)制代碼 代碼如下:

[~/shell/function]# cat array.sh
#!/bin/bash
a=(11 12 13 14 15)
echo ${a[*]}
function array(){
  echo parameters : "$@"
  local factorial=1
  for value in "$@"
  do
    factorial=$[ $factorial * $value ]
  done
  echo $factorial
}
array ${a[*]}
[~/shell/function]# ./array.sh
11 12 13 14 15
parameters : 11 12 13 14 15
360360

7.函數(shù)返回?cái)?shù)組變量

復(fù)制代碼 代碼如下:

[~/shell/function]# cat array1.sh
#!/bin/bash
a=(11 12 13 14 15)
function array(){
  echo parameters : "$@"
  local newarray=(`echo "$@"`)
  local element="$#"
  local i
  for (( i = 0; i < $element; i++ ))
  {
    newarray[$i]=$[ ${newarray[$i]} * 2 ]   
  }
  echo  new value:${newarray[*]}
}
result=`array ${a[*]}`
echo ${result[*]}
[~/shell/function]# ./array1.sh
parameters : 11 12 13 14 15 new value:22 24 26 28 30

相關(guān)文章

  • Linux下使用Shell腳本實(shí)現(xiàn)ftp的自動上傳下載的代碼小結(jié)

    Linux下使用Shell腳本實(shí)現(xiàn)ftp的自動上傳下載的代碼小結(jié)

    如何實(shí)現(xiàn)在ftp自動上傳下載文件腳本呢?想必還有很多朋友都不太了解吧,下面是ftp自動上傳下載文件腳本方法,希望對朋友們有些幫助
    2013-02-02
  • 一天一個(gè)shell命令 linux文本操作系列-tree命令詳解

    一天一個(gè)shell命令 linux文本操作系列-tree命令詳解

    這篇文章主要介紹了一天一個(gè)shell命令 linux文本操作系列-tree命令詳解,需要的朋友可以參考下
    2016-06-06
  • Shell程序退出狀態(tài)碼的命令詳解

    Shell程序退出狀態(tài)碼的命令詳解

    在本篇文章當(dāng)中主要給大家介紹一個(gè)shell的小知識——狀態(tài)碼。這是當(dāng)我們的程序退出的時(shí)候,子進(jìn)程會將自己程序的退出碼傳遞給父進(jìn)程,有時(shí)候我們可以利用這一操作做一些進(jìn)程退出之后的事情,比如當(dāng)程序執(zhí)行失敗或者被某個(gè)信號殺死我們就可以了解到,然后做出對應(yīng)的措施
    2022-10-10
  • linux shell內(nèi)置判斷語句

    linux shell內(nèi)置判斷語句

    內(nèi)置判斷,成功的時(shí)候返回0,不成功返回非零。接下來通過本文重點(diǎn)給大家介紹linux shell內(nèi)置判斷語句,感興趣的的朋友一起看看吧
    2017-08-08
  • ssh遠(yuǎn)程執(zhí)行命令方法和Shell腳本實(shí)例

    ssh遠(yuǎn)程執(zhí)行命令方法和Shell腳本實(shí)例

    這篇文章主要介紹了ssh遠(yuǎn)程執(zhí)行命令方法和Shell腳本實(shí)例,本文講解了ssh執(zhí)行遠(yuǎn)程操作方法和遠(yuǎn)程執(zhí)行命令shell腳本示例,需要的朋友可以參考下
    2015-04-04
  • 解決linux下openoffice word文件轉(zhuǎn)PDF中文亂碼的問題

    解決linux下openoffice word文件轉(zhuǎn)PDF中文亂碼的問題

    下面小編就為大家?guī)硪黄鉀Qlinux下openoffice word文件轉(zhuǎn)PDF中文亂碼的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • Linux全網(wǎng)最全面常用命令整理(附實(shí)例)

    Linux全網(wǎng)最全面常用命令整理(附實(shí)例)

    這篇文章主要介紹了Linux命令,是目前最全面的集合,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • Linux Vim 實(shí)用命令詳解

    Linux Vim 實(shí)用命令詳解

    這篇文章主要介紹了Linux Vim 實(shí)用命令,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 淺析Linux常用文件管理命令

    淺析Linux常用文件管理命令

    這篇文章主要介紹了Linux常用文件管理命令,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-04-04
  • shell正則表達(dá)式、grep命令和sed命令舉例詳解

    shell正則表達(dá)式、grep命令和sed命令舉例詳解

    正則表達(dá)式就是用于描述這些規(guī)則的工具,換句話說正則表達(dá)式就是記錄文本規(guī)則的代碼,這篇文章主要給大家介紹了關(guān)于shell正則表達(dá)式、grep命令和sed命令的相關(guān)資料,需要的朋友可以參考下
    2024-02-02

最新評論