1、變量linux
一、linux大小寫敏感,變量取名要注意大小寫。能夠經過變量名前面加$來訪問變量的內容。能夠經過使用read命令來將用戶輸入的值賦給一個變量。正則表達式
二、給變量賦值時,若是字符串中包含空格,就必須用引號把他們引發了,還要注意在等號兩邊不能有空格。shell
三、變量在雙引號中會用變量值替換,而在單引號中就不會替換,也能夠經過轉義字符\來取消$的特殊含義。vim
例:myvar=「Hi there!」函數
echo $myvar測試
echo "$myvar"this
echo ' $myvar'spa
echo \$myvar命令行
將會輸出以下:Hi there!orm
Hi there!
$myvar
$myvar
四、環境變量:環境變量一般用大寫字母作名字,爲了與環境變量區別開來,用戶自定義變量通常都用小寫字母。
經常使用的環境變量有:
一、shell的布爾判斷命令[或test。test的三種條件類型:字符串比較、算術比較和文件有關的條件測試。
二、控制結構
Ø if語句:
if condition
then
statements
else
Statements
Fi
例:#!/bin/sh
if [ -f /root/cherie_test/test_path.sh ];then
echo "/root/cherie_test/test_path.sh exists"
fi
if [ -d /root/cherie_test/test_path.sh ];then
echo "/root/cherie_test/test_path.sh is a director"
else
echo "/root/cherie_test/test_path.sh is not a directory"
fi
解析:[ ]先後都要有空格,否則會報[: missing `]'錯誤;if與[之間也須要有空格,沒有的話會報syntax error near unexpected token `then'錯誤。
Ø elif語句。對if語句的進一步測試。
例:#!/bin/sh
echo "Is it morning? Please answer yes or no "
read timeofday
if[ $timeofday = "yes"]; then
echo "Good morning"
exit 0
elif [ $timeofday = "no" ];then
echo "Good afternoon"
exit 0
else
echo "Sorry,$timeofday not recognized. Enter yes or no "
exit 1 //異常退出
fi
解析:elif會對在第一個if條件不知足的狀況下進行進一步測試,若是兩次測試的結果都不成功,就打印出一條錯誤信息並以1爲退出碼退出。
Ø for 語句。語法格式:for variable invalues
do
Statements
done
例:#!/bin/sh
for file in $(ls f*.sh); do
lpr $file
done
exit0
解析:打印當前目錄中全部以字母f開頭的腳本文件。for的參數來着$()中的命令的輸出結果,shell擴展f*.sh給出全部匹配此模式的文件的名字。此例中可能會報錯lpr: error - scheduler not responding!這是vim配置問題。
Ø while 語句。語法格式: while condition do
Statements
Done
例:#!/bin/sh
foo=1
whlie [ "$foo" -le 20 ]
do
echo "Here we go again"
foo=$(($foo+1))
done
exit 0
解析:測試foo的值,若是它小於20就執行循環體,-le表示小於。
算表達式的使用: count=1
count=$[${count} + 1] 變量加1
Ø until語句。語法格式:until condition
do
Statements
Done
它與while循環很類似,只是把條件測試反過來,循環將執行直達條件爲真爲止,而不是條件爲真時反覆執行。
Ø case 語句。語法格式case variable in
pattern statements;;
pattern statements;;
...
esac
注意,每一個模式行都以雙分號結尾。
例:#!/bin/sh
echo "Is it morning?Please answer yes or no"
read timeofday
case "$timeofday" in
yes|y|Yes|YES)
echo "Good morning"
echo "Up bright and early this morning"
;;
n*|N*) echo "Good afternoon";;
*) echo "Sorry ,answer not recognized";;
esac
exit 0
解析:case語句被執行時,會把timeofday的內容與各個字符串依次進行比較。一旦某個字符串輸入匹配成功,case命令就會執行緊隨右括號後面的代碼。case命令會對用來作比較的字符串就行正常的通配符擴展,所以能夠指定字符串的一部分在其後加上*通配符,如n*;只使用一個單獨的*表示匹配任何可能的字符串。
一、函數的定義。咱們只需簡單的寫出它的名字,而後是一對空括號,再把有關的語句放在一對花括號中,如:function_name () {
Statements
}
例:#!/bin./sh
foo () {
echo "Function foo is executing"
}
echo"script starting"
foo
echo "script ended"
exit 0
運行結果以下: script starting
Function foo is executing
script ended
解析:當遇到foo()結構時,它知道定義了一個名爲foo的函數。當執行到foo行時,shell就知道應該去執行剛纔定義的函數。
注:在調用一個函數以前必須先對它進行定義。
Ø break 命令。終止循環
Ø :命令。冒號(:)命令是一個空命令。它偶爾會被用於簡化條件邏輯,至關於true的一個別名。因爲它是內置命令,因此它運行的比true快,但它的輸出可讀性較差。
Ø continue命令。使for、while或until循環跳到下一次循環繼續執行。continue能夠帶一個可選的參數以表示但願繼續執行的循環嵌套層數,也就是說你能夠部分的跳出嵌套循環。
Ø .命令。點(.)命令用來執行當前shell中的命令。
Ø echo命令。使用echo命令來輸出結尾帶有換行符的字符串。 經常使用 echo -n來去掉換行符。
Ø eval命令。eval命令容許你對參數進行求值,有點像一個額外的$。
Ø exec命令。將當前shell替換爲一個不一樣的程序,腳本程序中exec命令後面的代碼都不會執行。
Ø exit n命令。exit命令使腳本程序以退出碼n結束運行。,退出碼0表示成功,退出碼1~125是腳本程序使用的錯誤代碼。
Ø export命令。export命令將做爲它參數的變量導出到子shell中,並使之在子shell中有效。在默認狀況下,在一個shell中被建立的變量在這個shell調用的下級(子)shell中是不可用的。export命令把本身的參數建立爲一個環境變量,而這個環境變量能夠被其餘腳本和當前程序調用的程序看見。
例:腳本export 2
腳本export1
第一個空行的出現是由於變量foo在export2中不可用,因此$foo被賦值爲空,echo一個空變量將輸出一個空行。Bar用export聲明後在export1中仍然有效。
Ø expr命令。expr命令將它的參數看成一個表達式來求值。
Ø printf命令。語法:printf 「format string」 paremeter1 paremeter2
它支持的轉義序列:
Ø return命令。return命令的做用是使函數返回。
Ø set命令。set命令的做用是爲shell設置參數變量。還能夠經過set命令和它的參數來控制shell的執行方式。其中最經常使用的命令格式是set -x,它讓一個腳本程序跟蹤顯示它當前執行的命令。
Ø shift命令。shift命令把全部參數變量左移一個位置,使$2變成$1,$3變成$2,依此類推。
Ø trap命令。用於指定在接收到信號後將要採起的行動。trap命令的參數分爲兩部分,前一部分是接收到指定信號時將要採起的行動,後一部分是要處理的信號名,trap command signal。
Ø unset命令。unset命令的做用是從環境中刪除變量或函數。
Ø find 命令。查找文件的功能。語法格式:find [path] [option] [tests] [actions]
一些經常使用的選項:
測試部分,能夠提供給find命令的測試很是多,每種測試返回的結果有兩種可能:true或false。find命令開始工做時,它按照順序將定義的每種測試依次應用到它搜索到的每一個文件上。
咱們還能夠用操做符來組合測試。大多數操做符有兩種格式:短格式和長格式,
常見的動做:
Ø grep命令。使用grep命令在文件中搜索字符串。grep語法格式:grep[option] pattern [FILES] 若是沒有文件名,則搜索標準輸入。
grep命令的一些主要選項:
特殊字符:
若是你想將上述字符用做普通字符,就須要在它們前面加上\字符。因此,若是你想使用$字符,只須要簡單的將它寫爲\$。
在方括號中還可使用一些有用的特殊匹配模式,
匹配字符:
跟蹤腳本程序中複雜錯誤的主要方法是設置各類shell選項。爲了完成這一任務,你能夠在調用shell時加上命令行選項,各類shell選項: