要定義乙個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 ...