shell基礎筆記

來源:互聯網
上載者:User

標籤:shell   linux   

 變數

聲明變數:
declare attribute variable
#attribute表示變數的屬性,常見的屬性如下:
# -i 將變數定義為整數;-a 變數聲明為陣列變數;-r 將變數聲明為唯讀變數;-x 將變數設定成環境變數

局部變數:
在函數的內部通過local關鍵字定義局部變數,此外,函數的參數也是局部變數。範圍從被定義的地方開始,到函數的結束或被顯示的刪除,在函數外面使用局部變數會得到一個空值

全域變數:
可以在指令碼中定義,也可以在函數中定義(不使用local關鍵字)。範圍從被定義的地方開始,一直到shell指令碼結束或者被顯示的刪除

系統變數:
$n 表示傳遞給指令碼的第n個參數
$0 當前指令碼的名稱
$# 命令列參數的個數
$? 前一個命令或者函數的返回狀態代碼(也包括函數的返回值),執行成功返回0,否則,返回1
$* 以“參數1 參數2 參數3..”的形式返回所有參數的值
[email protected] 以“參數1”說“參數2”“參數3..”的形式返回所有參數的值
$$ 返回本程式的進程ID(PID)
$_ 儲存之前執行的命令的最後一個參數

環境變數:
shell程式在運行時,都會接收一組變數,這組變數就是環境變數

#使用 set 命令列出所有的環境變數

PATH 命令搜尋路徑,以冒號為分隔字元,目前的目錄不在系統路徑裡(這點與Windows不同)
HOME 使用者主目錄的路徑名,是cd命令的預設參數
SEHLL shell的全路徑名
PWD 當前的工作目錄
HISTFILE 命令曆史檔案
LOGNAME 當前的登入名稱
TMOUT shell自動結束的時間,單位為秒,若設為0則禁止shell自動結束

變數賦值:
variableName=value

命令替換:
#指在shell程式中,將某個shell命令的執行結果賦給某個變數。
#在bash中,有以下兩種文法可以進行替換
variableName=‘command‘
variableName=$(command)


#賦值號“=”的左右兩邊不能直接跟空格,否則shell會將其視為命令

引用變數:
${variableName}或$variable

間接變數引用:
var=name
name=John
${!var}與${name}的效果相同


清除變數:
unset variableName

特別注意:


單引號括起來的的字元都作為一般字元出現
雙引號括起來的字元,除“$”“\”“‘”(單引號)和“"”(雙引號)之外,其餘字元作為一般字元對待
反引號括起來的字串被shell解釋成命令,在執行時,shell首先執行該命令,並以它的標準輸出結果取代整個反引號部分

------------------------------------------------------------------------------------------
條件測試(test命令和[命令):

#條件測試中的指定條件為真時,條件測試的返回值為0;為假時,返回值為非0值

#test命令
test expression

#[命令
#為了增強程式可讀性,shell要求在條件運算式後面追加一個右方括弧]來與前面的[的命令配對
#條件運算式與左右方括弧之間必須都保留一個空格
[ expression ]

#如果expression是一個字串,則 -n 判斷字串是否是非空;-z 判斷字串是否是空串,使用“=”和“!=”判斷兩個字串是否相等

#如果expression是一個檔案名稱,
#則 -e(或-a) 判斷檔案是否存在;-r、-w、-x判斷檔案是否存在,且是否可讀、可寫、可執行;-b、-c、-d、-L判斷檔案是否存在,且是否為塊、字元目錄、連結檔案

#如果expression是一個由邏輯與、邏輯或、邏輯非構成的運算式,則 !表示邏輯非;-a 表示邏輯與;-o 表示邏輯或

------------------------------------------------------------------------------------------

if語句:

if expression
then
 statement1
 statement2
 ...
else
 statement3
 statement4
 ...
fi

或:
if expression
then
 statement1
 statement2
 ...
elif expression2
then
 statement3
 statement4
 ...
elif expression3
then
 statement5
 statement6
 ...
else
 statement7
 ...
fi


#在shell中,有一個特殊的命令,稱為空白命令,表示方法是一個冒號“:”,該命令不做任何事情,但是它的退出狀態永遠是0

exit語句:
#exit語句的基本作用是終止shell程式的執行,可帶一個可選的參數,用來指定程式退出時的狀態代碼
exit status

------------------------------------------------------------------------------------------
case語句:

case variable in
value1)
 statement1
 ...
 statement2;;
 
value2)
 statement3
 ...
 statement4;;
*)
 statement5
 ...
 statement6;;
esac

------------------------------------------------------------------------------------------
for迴圈:

for variable in {list}
do
 statement1
 statement2
 ...
done

#list是一個列表,可以是一系列數字或字串,元素間用空格隔開,如果使用字串做列表元素,則外面的大括弧可以省略
# {1..8} 表示1-8的簡寫
# {1..100..5} 表示1-100間,從1開始,每次遞增5,即1,6,11,16...
# ${arrayName[*]} 表示數組arrayName的全部元素


不帶列表的for迴圈:

#shell從命令列擷取條件列表,以下三種形式等價

for variable     for variable in [email protected]    for variable in $*
do                    do                             do
 statement1        statement1                statement1
 statement2        statement2                statement2
 ...                       ...                               ...
done                done                         done

類C風格的for迴圈:

for ((expression1;expression2;expression3))
do
 statement1
 statement2
 ...
done

------------------------------------------------------------------------------------------
util迴圈:

util expression
do
 statement1
 statement2
 ...
done

------------------------------------------------------------------------------------------
while迴圈:

while expression
do
 statemnet1
 statement2
 ...
done

------------------------------------------------------------------------------------------
函數的定義:

function functionName()  
{
 statement1
 ...
}

#function可以省略

------------------------------------------------------------------------------------------
別名的設定與刪除:

alias name="command"

unalias name

------------------------------------------------------------------------------------------
算數運算:

expr、$((...))、$[...]和let

#expr是一個shell命令,可以計算摸個運算式的值
expr expression

舉例:
#先計算2和6的差,然後再乘以12,並把計算結果賦給變數result

#一定要注意運算子(冪運算“**”)左右的空格,且expr不能計算冪運算

result=`expr \( 2 - 6 \) \* 12`
result=$(( 1 + 2 ))
result=$[ 1 + 2 ]
let n=n + 1   (還是 let n=n+1  ?)

------------------------------------------------------------------------------------------
cat 查看檔案內容:

cat fileName
# -n 顯示文本的行號

cat -n fileName
# grep -n "" fileName和上一行的作用相同

---------------------------------------------------------------------------------
echo 輸出文本

echo [options] string

#如果要輸出的文本是由多個單片語成的,則可以使用雙引號或者單引號將其引起來。
#如果不用引號引起來,則echo命令將一個字串根據空格分割成多個字串輸出了

# -n 禁止echo語句執行完成後自動附加分行符號
# 逸出字元 \c 禁止繼續輸出文本

echo `command`
#echo可以將shell命令執行結果顯示出來,且需要使用反引號將命令引用起來

#將echo命令顯示的資訊覆蓋到目標檔案中
echo string > fileName

#將echo命令顯示的資訊追加到目標檔案的末尾
echo string >> fileName

------------------------------------------------------------------------------------------
rev 反轉每行字元的順序

rev [files]
#files表示要處理的檔案的檔案名稱列表,如果是多個檔案,則檔案名稱之間用空格隔開




shell基礎筆記

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.