最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間: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時會出錯。

復(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ù)部分擁有名字相同的變量時,可能會相互影響,例如:

復(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ù)返回數(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)文章

  • Shell腳本定時備份清除運(yùn)行系統(tǒng)日志的代碼

    Shell腳本定時備份清除運(yùn)行系統(tǒng)日志的代碼

    寫備份并清除老日志Shell腳本,并附帶一個清除日志(log)的shell腳本代碼,需要的朋友可以參考下
    2013-02-02
  • 關(guān)于shell的幾個不為人知卻十分有用的命令分享

    關(guān)于shell的幾個不為人知卻十分有用的命令分享

    這篇文章主要介紹了關(guān)于shell的幾個不為人知卻十分有用的命令,需要的朋友可以參考下
    2016-03-03
  • 使用Bash Shell檢查文件是否存在的方法

    使用Bash Shell檢查文件是否存在的方法

    大多數(shù)情況下,可以使用測試命令來對條件進(jìn)行測試。比如可以比較字符串、判斷文件是否存在及是否可讀等等。下面這篇文章就主要介紹了使用Bash Shell檢查文件是否存在的方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • shell中常用的命令之diff和patch用法

    shell中常用的命令之diff和patch用法

    這篇文章主要介紹了shell中常用的命令:diff和patch,在這里diff是比較文件內(nèi)容,patch是打補(bǔ)丁的,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • Rsync 秒殺一切備份工具,你能手動屏蔽某些目錄嗎?

    Rsync 秒殺一切備份工具,你能手動屏蔽某些目錄嗎?

    這篇文章主要介紹了Rsync 秒殺一切備份工具,你能手動屏蔽某些目錄嗎?本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • 常用的34個Linux?Shell腳本(小結(jié))

    常用的34個Linux?Shell腳本(小結(jié))

    本文主要介紹了常用的35個Linux?Shell腳本,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Linux shell命令幫助格式詳解

    Linux shell命令幫助格式詳解

    最近看了一個教程,關(guān)于Linux命令的,本來以為當(dāng)是復(fù)習(xí)隨便看看的,結(jié)果看了不禁汗顏,這個真挺有學(xué)問的,很多東西都是我還不知道的,故此做總結(jié)。下面這篇文章主要介紹了Linux shell命令幫助格式的相關(guān)資料,需要的朋友可以參考借鑒。
    2017-01-01
  • shell 腳本之用ab每隔30分鐘并發(fā)一次休息10分鐘

    shell 腳本之用ab每隔30分鐘并發(fā)一次休息10分鐘

    這篇文章給大家分享如何使用shll解決用ab每隔30分鐘并發(fā)一次休息10分鐘,需要的朋友可以參考下
    2019-11-11
  • bash腳本編程學(xué)習(xí)之算術(shù)運(yùn)算與文件查找

    bash腳本編程學(xué)習(xí)之算術(shù)運(yùn)算與文件查找

    算數(shù)運(yùn)算在每個編程語言里面是最基本的功能,在bash里面也是。下面這篇文章就給大家詳細(xì)介紹了腳本編程bash中的算術(shù)運(yùn)算與文件查找,文中還給出了多道練習(xí)題和答案,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • shell腳本nicenumber實現(xiàn)代碼

    shell腳本nicenumber實現(xiàn)代碼

    給出一個數(shù)字,用逗號分隔的形式顯示出來,希望DD和TD被實例化等
    2016-08-08

最新評論

怀柔区| 白银市| 高唐县| 北宁市| 襄汾县| 普格县| 于田县| 柘城县| 定日县| 凌源市| 固阳县| 建昌县| 新竹县| 井陉县| 峨眉山市| 清新县| 娄底市| 霍林郭勒市| 增城市| 包头市| 宁陕县| 应城市| 桐柏县| 五台县| 泾阳县| 衡东县| 甘孜县| 宣化县| 顺昌县| 中卫市| 七台河市| 江孜县| 萨嘎县| 松溪县| 公安县| 镇江市| 芜湖县| 吉林市| 莱阳市| 兴安县| 阿合奇县|