Linux Shell 編程筆記

來源:互聯網
上載者:User

 

#/bin/bash

1
、萬用字元

*
:匹配任何字元和字串,包括Null 字元串。

?:匹配任意一個字元。如:?
abc
可以匹配任何以
abc
結束,以任一字元開關的四個字元的字串。

[…]
:匹配括弧裡列出的任何單字元。如
abd[def]
匹配以
abc
開頭,以
def
中任意一個字元結尾的字串。

2
、別名,自訂一個命令,作為其它命令的縮寫,減少鍵盤輸入。如:

alias list=’ls
-l’

取消別名:
unalias list

3
、給指令碼添加可執行許可權:
chmod +x file.sh

4

Shell
中的變數分為局部變數、環境變數、位置變數三種。

Shell
語言是解釋性語言,對一個變數進行賦值時,就定義了變數。

程式的變數無資料類型,可以使用同一個變數存放不同資料類型的值。

變數賦值後,加一個
$
訪問變數的值。

賦值符號:
=

沒有空格的字串的賦值,可以不用引號。

5
、環境變數,是一個使用者的所有進程中都可以訪問的變數。

使用
export
命令可以查看系統的環境變數列表。

環境變數的訪問,需要在一個環境變數的前面加
$
個符號。

定義一個環境變數:

export XX=1234

                                              
 
echo $XX

6
、位置變數,是
Shell
程式在運行時傳入的參數。程式以變數的形式來調用這些參數,被存放到
1~9

9
個變數名中,被形象地稱為位置變數。如

#!/bin/bash

#test.sh

echo $1

echo $2

執行:
./test.sh Beijing
abcd

結果如下:

Beijing

abcd

7
、算術運算子:
+

-

*

/

**

%

+=

-=

*=

/=

%=

8
、用
expr
改變運算順序。如
echo `expr 1+2`
,結果:
1+2,    echo `expr 1 + 2`,結果:3


let
指示數學運算。
b=let 1+2
,然後用
echo $b
輸出
b
的值
3

$[]
表示數學運算。中括弧中的內容將先進行數學運算。如
echo $[1+2]

9

echo
命令可以輸出檔案或變數的值,是
Shell
中最常用的輸出方式。可以輸出到終端,或檔案。

echo $str 
#
輸出到終端

echo $str
>file 
#
輸出到檔案
file
中,如果沒有檔案,會建立一個。如果已經存在,將覆蓋以前的檔案。如果是追加輸出到檔案,改用
>>

格式控制符:
/c
,輸出完畢不換行;
/n
,輸出一個換行;
/t
輸出一個跳格;

echo
後加
-e
選項,輸出特殊字元。加
-n
可以禁止
echo
輸出後的換行。

10

read
命令讀取資訊

read
命令可以從鍵盤或檔案讀入資訊,並賦給一個變數。

如果唯讀入一個變數,會把鍵盤上輸入的所有資訊賦值給這個變數,
enter
鍵結束;如果讀放多個變數,用空格鍵將輸入的變數隔開。如果輸入變數的個數多於需要讀取變數的個數,將會把剩餘的變數賦值給最後一個變數。在讀取語句後添加
<filename
,表示從檔案中讀取資料,並且賦給變數。如
read A B <a.txt

11
、檔案重新導向:

cmd >
filename:
把標準輸出重新導向到一個檔案中

cmd >>
filename:
把標準輸出以追加的方式重新導向到一個檔案中

cmd 1 >
filename:
把標準輸出重新導向到一個檔案中

cmd
>filename 2>&1:
把標準輸出和標準錯誤一起重新導向到一個檔案中

cmd 2>
filename:
把標準輸出的錯誤得定向到一個檔案中

cmd
>>filename 2>&1
把標準輸出和標準錯誤一起追加到一個檔案中

cmd <
filename1 > filename2:

cmd
命令以
filename
檔案為標準輸入,以
filename2
檔案作為標準輸出

cmd <
filename
:把
cmd
命令以
filename
檔案作為標準輸入

例:將檔案
a.txt
中的所有小寫字母轉換成大寫字母,然後儲存到檔案
b.txt

tr ”[a-z]” “[A-Z]”
< a.txt > b.txt

12
、雙引號表示一個字串。字串中不能直接使用
$
、引號、雙引號、反斜線、反引號這些特殊字元。如果字串中沒有空格,使用雙引號將賦值的字串引起來,和不使用雙引號效果是一樣的。當字串中有空格時,用雙引號表示引號中的內容為一個字串。

13
、反引號,反引號
`
並不是單引號,而是
”Tab”
鍵上面的那個符號。反引號用於執行引號中的系統命令,然後將命令的結果返回。

echo `date`

A=`ls`

echo $A

14
、反斜線,用於對特殊字元進行轉義。
str=///%/*/&;echo $str

15
、檔案狀態測試

test –x a.txt  
#
測試目前的目錄下的檔案
a.txt
是否可以執行

-d
測試檔案是否為目錄檔案

-s
是否非空

-f
是否是正規檔案

-w
是否可寫

-L
是否是符號串連

-x
是否可執行

-r
是否可讀

-u
是否有
suid
位設定

16
、數值測試,指的是比較兩個數值大小或相等關係。

test
命令:

test
第一個運算元
數值比較符
第二個運算元

 

用中括弧代替
test
命令:

[
第一個運算元
數值比較符
第二個運算元
]

 

數值比較符:

-eq:
相等

-ne
:不相等

-le
:小於或等於

-ge
:大於或等於

-gt
:大於

-lt
:小於

例:

test 3 –eq 5;
等價於
[ 3 –eq 5 ]

17
、字串測試符:

=
:兩個字串是否相等

!=
:是否不相等

-z
:是否是Null 字元串

-n
:非Null 字元串

18
、邏輯測試符:
-a
邏輯與;
-o
邏輯或;
!
邏輯否。
[  
-w a.txt –a –x a.txt ]; echo $?

19
、流程式控制制結構

if
語句:

if
條件

then cmd1

else cmd2

fi

 

if
條件
1

then cmd1

elif
條件
2

then cmd2

else cmd3

fi

 

for
語句:

for
變數名
in
列表

do

cmd1

cmd2…

done

例:

#!/bin/bash

# 9 * 9

for i in 1 2 3 4 5

do

for j in 1 2 3
4 5

do

   
if [ $j –le $i ]

   
then

   
echo –e “$j/c”

   
echo –e “*/c”

   
echo –e “$i/c”

   
echo –e “=/c”

   
echo –e “$[ $i*$j ]  
/c”

fi

done

echo “”

done

 

until
語句:

until
條件

do

cmd1

cmd2…

done

例:

#!/bin/bash

#1+2+…+100

sum=0

i=1

until [$i –gt 100]

do

    

sum=$[$sum+$i]

    
i=$[$i+1]

done

echo $sum

 

20、在後台執行命令

如果在命令列後面加上一個&符號,Shell就會在立即返回到提示符下,並在後台並行地執行該命令,而無需等待就可以啟動下一下命令。後台作業在執行時的輸出結果將被送到螢幕。

!變數包含提交給背景最後一項作業的PID,可以用kill -9 $!殺死該後台進程。

jobs命令可以顯示當前在後台中啟動並執行作業。

fg %num可以將num數字指定的作業送到前台執行。如果沒有指定數字,則將最近執行的後台作業送到前台執行。

 

 

 

 

 

#!/bin/bash<br />str1="badasealya"<br />str2="badasealy"<br />if [ "$str1" /> "$str2" ]<br />then<br /> echo "Yes"<br />else<br /> echo "No"<br />fi<br />echo "end!"</p><p>#!/bin/bash<br />str1="badasealy"<br />str2="badasealy"<br />if [ "$str1" == "$str2" ]<br />then<br /> echo "Yes"<br />else<br /> echo "No"<br />fi<br />echo "end!"<br /> 

相關文章

聯繫我們

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