1. 程式人生 > >linux shell script中的函式簡介

linux shell script中的函式簡介

        懂C語言的人, 沒有不知道函式的, 下面我們來看看linux shell script中的函式, 其實也很簡單:

[[email protected] learn_shell]$ ls
a.sh
[[email protected] learn_shell]$ cat a.sh 
#! /bin/bash

fun()
{
	echo "calling fun"
}

echo "begin ---"
fun   # call fun
echo "end ---"
[[email protected] learn_shell]$ 
[[email protected]
learn_shell]$ [[email protected] learn_shell]$ [[email protected] learn_shell]$ ./a.sh begin --- calling fun end --- [[email protected] learn_shell]$
     可以看到, 呼叫的時候, 不需要寫fun(), 而應該用fun, 而且fun函式在定義的時候, 也不需要返回值型別。

     再看:

[[email protected] learn_shell]$ ls
a.sh
[[email protected]
learn_shell]$ cat a.sh #! /bin/bash fun() { echo $1 } echo "begin ---" fun # call fun echo "end ---" [[email protected] learn_shell]$ [[email protected] learn_shell]$ [[email protected] learn_shell]$ [[email protected]ost learn_shell]$ ./a.sh good begin --- end --- [[email protected]
learn_shell]$
      可以看到, 呼叫fun的時候, 沒有傳遞引數, 所以fun中實際並不能訪問到$1

     那行, 我們來傳一下引數:

[[email protected] learn_shell]$ ls
a.sh
[[email protected] learn_shell]$ cat a.sh 
#! /bin/bash

fun()
{
	echo $0
	echo $1
}

echo "begin ---"
fun "$1"  # call fun
echo "end ---"
[[email protected] learn_shell]$ 
[[email protected] learn_shell]$ 
[[email protected] learn_shell]$ 
[[email protected] learn_shell]$ ./a.sh 
begin ---
./a.sh

end ---
[[email protected] learn_shell]$ ./a.sh good
begin ---
./a.sh
good
end ---

       可見, 引數傳遞成功。

       最後, 我們來看看return, 注意return 0表示成功:

[[email protected] learn_shell]$ ls
a.sh
[[email protected] learn_shell]$ cat a.sh 
#! /bin/bash

fun()
{
	return 0
}

echo "begin ---"

if fun
then
	echo good
else
	echo bad
fi

echo "end ---"
[[email protected] learn_shell]$ 
[[email protected] learn_shell]$ 
[[email protected] learn_shell]$ 
[[email protected] learn_shell]$ ./a.sh 
begin ---
good
end ---
[[email protected] learn_shell]$ 

        linux shell script函式就是這麼簡單, 你想任性一點, 那也可以。



相關推薦

linux shell script函式簡介

        懂C語言的人, 沒有不知道函式的, 下面我們來看看linux shell script中的函式, 其實也很簡單: [[email protected] learn_shell]$ ls a.sh [[email protected] l

如何在 Linux Shell 程式設計定義和使用函式

函式是一段可複用的程式碼。我們通常把重複的程式碼放進函式中並且在不同的地方去呼叫它。庫是函式的集合。我們可以在庫中定義經常使用的函式,這樣其它指令碼便可以不再重複程式碼而使用這些函式。 呼叫函式 在 Shell 中呼叫函式和呼叫其它命令是一模一樣的。例如,如果你

linux shell script程式之選擇結構簡介

        很多人都是先學習C/C++語言, 然後再學習shell script的。 如果大家有一點點程式設計基礎, 那麼就很容易理解所謂的順序、選擇和迴圈。順序結構其實沒什麼好說的, 之前早就接觸過了, 在本文中, 我們來介紹一下選擇結構。 雖然簡單, 但還是要熟練正

linux shell script 進階篇(1)--如何打造功能強大的函式

函式不管在那個程式語言中都有舉足輕重的地位,在linux shell script中當然也不例外,下面我們就一起學習如何打造出功能強大的函式。 1.如何在script中建立一個函式,可以用以下兩種方式: A.  function name {   commands } B.

Linux shell script 的 關閉echo -e 在shell指令碼輸出 “-e”

第一次寫 script指令碼 按照鳥哥的hello world 的程式寫了一下: #!/bin/bash # Program: # This program shows "hello World!" in your screen. #History: # 2015/07/1

Shell Script "$()" ," ${}" Learning

subst 輸入 理解 def 而已 var 區別 都是 date shell中$(( )) 與 $( ) 還有${ }的區別 http://blog.chinaunix.net/uid-14351756-id-2820651.html $( ) 與 ` ` (反引號)

學習Linux shell指令碼連線字串的方法

這篇文章主要介紹了Linux shell指令碼中連線字串的方法,如果想要在變數後面新增一個字元,可以用一下方法: 程式碼如下: $value1=home $value2=${value1}"=" echo $value2 把要新增的字串變數新增{},並且需要把$放到外面。 這樣輸出的結果

shell script執行sql語句,返回結果中文亂碼問題——在企業開發的解決方案

問題描述 有一個需求,需要編寫一個指令碼向遠端資料庫拉取資料並生成一個檔案。在編寫完成並執行後,發現檔案中的中文為亂碼。 指令碼中的查詢命令如下所示: QUERY_CMD="mysql -h${HOST} -u${USER} -p${PWD} -sBN " SQL="SELECT

shell script執行sql語句,返回結果中文亂碼問題

問題描述 有一個需求,需要編寫一個指令碼向遠端資料庫拉取資料並生成一個檔案。在編寫完成並執行後,發現檔案中的中文為亂碼。 指令碼中的查詢命令如下所示: QUERY_CMD="mysql -h${HOST} -u${USER} -p${PWD} -sBN " SQ

Linux Shell指令碼單引號(‘)和雙引號(“)的區別

在Linux作業系統上編寫Shell指令碼時候,我們是在變數的前面使用$符號來獲取該變數的值,通常在指令碼中使用”$param”這種帶雙引號的格式,但也有出現使用’$param’這種帶引號的使用的場景,首先大家看一段例子: [[email protected] ~]# name=TekTe

shell指令碼函式的呼叫

函式 : 把一個功能封裝起來,使用時直接呼叫函式名,這樣的指令碼好處:模組化,程式碼可讀性強,擴充套件性方便函式的定義     在shell 中有兩種定義函式的語法格式,分別為:        函式名()        {          命令序列          } 

Linux shell程式設計的判斷條件

-b file            若檔案存在且是一個塊特殊檔案,則為真 -c file            若檔案存在且是一個字元特殊檔案,則為真 -d file            若檔案存在且是一個目錄,則為真 -e file            若檔案存在,

Linux Shell筆記之函式

1.建立函式 #!/bin/bash function func1 {                     function關鍵字建立函式    echo "this is func1" } func2() {                            接近其它語言形式的函式 echo "th

Linux shell指令碼呼叫另一個shell(exec、source、fork)

        最近在研究yarn的原始碼,在看到YarnChild的啟動指令碼時,看到啟動的時候用到了shell中得exec命令,比較好奇為什麼使用exec,網上找了一下這個命令和類似命令的使用方法,原文地址:http://qujunorz.blog.51cto

linux shell 自定義函式(定義、返回值、變數作用域)介紹

inux shell 可以使用者定義函式,然後在shell指令碼中可以隨便呼叫。下面說說它的定義方法,以及呼叫需要注意那些事項。 一、定義shell函式(define function) 語法: [ function ] funname [()] {     act

linux——shell變數及函式

shell變數 1.變數定義:     變數即在程式執行過程中它的值是允許改變的量,變數是用一串固定的字元來標誌不固定的值的一種方法,變數是一種使用方便的佔位符,用於引用計算機記憶體地址,該地址可以儲存scripts執行時可更改的程式資訊。在she

Linux Shell-awk輸出單引號(')

1 場景 在shell指令碼中,單引號‘'’是一個特殊字元,特別是當使用awk命令輸出單引號,即使使用/\'/轉義都無法輸出。 2 分析 嘗試使用單引號的八進位制編碼來替代它進行輸出: awk -F ':'  '{print "test.sh \047"$1"\047;

shell script的 ${a}和$a有什麼區別?

        最近碰到這個問題, 差點踩坑, 來記錄一下, 看看: #!/bin/bash echo $9 $10 echo $9 ${10}        看一下執行結果: xxxxxx$ .

Linux shell指令碼執行命令結果賦值給變數&&echo輸出變數是否包含換行符的問題

Linux shell指令碼中執行命令結果賦值給變數&&echo輸出變數是否包含換行符的問題 echo $ret 和 echo "$ret" 區別: 如果是echo $ret,輸出結果為一行,沒有換行符 如果是echo "$ret",輸出結果為多行,有換行符

linux shell script總結

在一些linux系統管理和自動化測試中經常需要寫一些shell指令碼,所以這裡總結一下主要的規則,便於以後編寫時查閱。 shell的開頭必須以 #!/bin/bash開頭,表明是使用/bin/bash來解釋指令碼的執行。 shell的註釋用# 可以使用so