shell程式設計(3)

來源:互聯網
上載者:User

shell程式設計(3)shell文法函數

要定義一個shell函數,我們只需要簡單地寫出它的名字,然後是一對空括弧,再把有關的語句放在一對花括弧中,如下所示:

function_name(){

statements

實驗:簡單的函數

#!/bin/bash

foo(){

echo“Function foo is executing”

}

echo “script starting”

foo

echo “script ended”

exit 0;

輸出:

script starting

Function foo is executing

script ended

當一個函數被調用時,指令碼程式的位置參數$*、$@、$1、$2等會被替換為函數的參數。這也是你讀取傳遞給函數的參數的辦法。當函數執行完畢後,這些參數會恢複為它們先前的值。

可以使用local關鍵字在shell函數中聲明局部變數,局部變數將局限在函數的作用範圍內。

實驗:從函數中返回一個值

指令碼程式:

#!/bin/sh

yes_or_no(){

echo "IS your name $*?"

while true

do

echo -n "Enter yes or no:"

read x

case "$x" in

y | yes ) return 0;;

n | no ) return 1;;

* ) echo "Answer yes of no"

esac

done

}

echo "original parameters are $*"

if yes_or_no "$1"

then

echo "ho $1, nice name"

else

echo "Never mind"

fi

exit 0

執行與輸出結果

root@ubuntu:/home/chen123/C++# ./a RickNeil

original parameters are Rick Neil

IS your name Rick?

Enter yes or no:yes

ho Rick, nice name

命令

break命令: 跳出for、while或until迴圈

:命令:空命令,相當於true的一個別名

continue命令: 使for、while或until迴圈跳到下一次迴圈繼續執行

.命令:用來執行當前shell中的命令

echo命令:輸出結尾帶分行符號的字串

eval命令:允許對參數進行求值

exec命令:典型用法是將當前shell替換為一個不同的程式。第二中用法非常少見,就是修改當前檔案描述符

exit n命令:使指令碼程式退出碼n結束運行。

export命令:將作為它參數的變數匯出到子shell中,並使之在shell中有效。

expr命令:將它的參數當做一個運算式來求值

printf命令:格式化輸出

return命令:使函數返回

set命令:為shell設定參數變數

shift命令:把所有參數變數左移一個位置,使$2編程$1,$3編程$2,一次類推。原來$1的值被丟棄。

trap命令:用於指定在接收到訊號後將要採取的行動

unset命令:從環境中刪除變數或函數

find命令

功能:尋找檔案

簡單的例子:用find在本地機器上尋找名為wish的檔案

$ find/ -name wish –print

/usr/bin/wish

這個命令執行需要花很長的時間,如果linux掛載了一大塊windows機器的檔案系統,還會搜尋掛載的目錄。

可以使用-mount選項,告訴find命令不要搜尋掛載的目錄。

$find / -mount –name -wish –print

/usr/bin/wish

find命令的完整文法格式如下所示:

find [path][options][tests][actions]

grep命令

功能:在檔案中搜尋字串

文法:

grep [options] PATTERN [FILES]

root@ubuntu:/home/chen123/C++# grep -chello hello.c

1

輸出hello在hello.c中匹配行的數目

here文檔

here文檔以連續的小於符號<<開始,緊跟著一個特殊的字元序列,該序列將在文檔的結尾處再次出現。<<是shell的標籤重新導向符號,此時,它表示命令輸入的是一個here文檔。

例子:

#! /bin/sh

cat << !FUNKY!

hello

this is a here

document

!FUNKY!

執行與輸出

root@ubuntu:/home/chen123/C++# ./b

hello

this is a here

document

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.