mkdir sh
cd sh
#! /bin/bash
cd /tmp
echo "hello world"
賦予程式檔案可執行許可權,直接執行./shellfile:./first.sh
呼叫命令直譯器(shell)解釋執行:bash first.sh
使用source命令執行:source first.sh
shell函式:用shell語言編寫的一系列程式**,可以像其他命令一樣被引用
外部命令:會建立乙個新程序來執行如:locate,grep,ifconfig,ls,find,
變數屬性宣告:declare或者typeset
陣列變數:和普通變數一樣,不需要先定義或者先賦值再使用,沒有賦值的情況下,陣列元素的值就是空串
變數引用操作符:$除了簡單的引用變數之外,還有字串替換,模式匹配替換模式匹配:filepath=/home/alice/major.minor.ext
$:如果pattern匹配varname的頭部,則刪除最長匹配部分,返回剩餘部分,varname本身不變
$:如果pattern匹配varname的尾部,則刪除最短匹配部分,返回剩餘部分,varname本身不變
$:如果pattern匹配varname的尾部,則刪除最長匹配部分,返回剩餘部分,varname本身不變
$或$:如果pattern匹配varname的某個子串,則將varname的最長匹配部分替換成string,並返回替換後的串,varname本身不變。如果模式以'#'開頭,則表示匹配varname的首部,如果模式以'%'開頭,則表示匹配varname的尾部。如果string為空串,匹配部分將被刪除。如果varname為@或者*,操作將被依次用於每個位置引數,並且擴充套件為結果列表。第一種格式僅替換第一次匹配的子串,第二種格式會替換所有匹配的子串
位置引數和特殊變數不加雙引號的$@和$*的作用是一樣的,加上雙引號的"$@","$*"在特殊場合作用會有所不同,"$@"是引用所有引數,可以進行迭代,"$*"表示引用所有引數連線在一起,中間用空格分開,是乙個字串。"$"表示引用陣列整體的各個元素位置變數不能由使用者直接設定,但是可以用set命令間接的設定除$0之外的位置變數的值
#! /bin/bash
# setposvar.sh
set learn linux program
echo $0 $1 $2 $3
shell內建了shift,用於左移位置引數,也就是原來的$2的值賦給$1(原$1的值永遠丟失),$3的值賦給$2。。。
#! /bin/bash
# shiftposvar.sh
set learn linux program
echo "parameter number: $#,they are:"
echo $1 $2 $3
shift
echo "after shifted, parameter number: $#, they are:"
echo $1 $2 $3
# execute
bash shiftposvar.sh one two three
# result
parameter number: 3,they are:
one two three
after shifted, parameter number: 2, they are:
two three
read命令:用於從鍵盤上讀取資料並且賦值給指定的變數,read命令可編寫互動式指令碼程式,格式:read 變數1 [2]
export語句:
linux shell 程式設計
bin bash comments your commands go here 首行中的符號 告訴系統其後路徑所指定的程式bash即是解釋此指令碼檔案的shell程式。除第一行外,以 開頭的行就是注釋行,直到此行的結束。如果一行未完成,可以在行尾加上 這個符號表明下一行與此行會合併為同一行。有環境變...
linux shell 程式設計
1 程式設計入門 shell的簡介。從程式設計師的角度來看,shell本身是一種用c語言編寫的程式,從使用者的角度來看,shell是使用者與linux作業系統溝通的橋梁。使用者既可以輸入命令執行,又可以利用 shell指令碼程式設計,完成更加複雜的操作。在linux gui日益完善的今天,在系統管理...
Linux Shell 程式設計
檔案描述 shell 代號 dev stdin 標準輸入,一般指的是鍵盤輸入 dev stdout 標準輸出,一般指終端顯示器 dev stderr 標準錯誤,一般指終端顯示器 l輸出重定向 l輸入重定向 l追加重定向 l錯誤重定向 2 l輸出和錯誤同時重定向 應用例子 1.將 ls的結果輸出到檔案...