shell程式設計 3

2021-06-21 14:13:52 字數 2506 閱讀 4977

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

function_name(){

statements

實驗:簡單的函式

#!/bin/bash

foo(){

echo「function foo is executing」

echo 「script starting」

fooecho 「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

doecho -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"

fiexit 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在本地機器上查詢名為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 [options] pattern [files]

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

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

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

shell程式設計高階3

二 case結構條件句 1 語法格式 case 字串變數 in 值1 指令1 值2 值3 值4 指令2 指令 esac 2 示例 1 示例1 根據使用者的選擇輸入,判斷是哪種水果並加上不同顏色 a 給字串加顏色 vi services scripts echo color01.sh echo e 0...

Shell程式設計實踐3

實驗目的 1 熟悉shell指令碼語法。2 掌握sed,grep 和awk操作。一.使用sed操作,文字如下 123abc456 456def123 567abc789 789def567 要求輸出 456abc123 123def456 789abc567 567def789 如下 sed r e...

shell程式設計100例(3)

11 石頭 剪刀 布遊戲 bin bash game 石頭 剪刀 布 num katex parse error expected eof got at position 12 random 3 生成0到2的乙個隨機數 com echo 請根據下列提示選擇您的出拳手勢 echo 1.石頭 echo ...