linux shell 程式設計

2022-04-02 05:22:36 字數 3358 閱讀 1724

cmd_result=$(date +%y%b%d)        //使用變數獲取命令執行的結果 或者 cmd_result=`date +%y%b%d`   反引號

mysqldump -uroot -pfeng --all jiale>/root/jiale$cmd_result.sql    //執行字串和變數拼接,也可以使用

$2.使用#來注釋,以及指令碼執行的方法

指令碼的開頭一般是

#!/bin/sh

因為指令碼前兩個字元一般是#!,系統會將這兩個字元之後的字元作為執行指令碼的命令直譯器的絕對路徑(也可以是其他指令碼直譯器的路徑)

指令碼執行的三個方法

(1)chmod  u+x  指令碼名        //給指令碼執行權

./指令碼名

(2)bash  指令碼名                     //直接使用shell啟動命令一般比上面的方法要慢一些

sh  指令碼名

(3)使用bash內部命令source或「.」執行指令碼

source  指令碼名

. 指令碼名               //「.」之後必須有乙個空格

3,i/o重定向,管道(|)和後台執行

cmd1 > file1

將命令1 的結果輸入到檔案1中

cmd1> >file1

將命令1 的結果追加到檔案1中

cmd1 < file1

將檔案1 的內容輸出作為 命令 1執行

cmd1 << file1

將檔案1 的內容追加到 命令 1

cmd1 2> file1

錯誤輸出重定向,命令1執行的錯誤資訊會輸入給檔案1

cmd1 &> file1

標準輸出與錯誤輸出重定向,標準輸出和錯誤輸出一起輸入到檔案1中,螢幕將無顯示

命令1 |命令2|命令1

將命令1的結果,輸出給命令2,作為命令2的輸入,再將命令2的結果輸出給命令3,作為命令3的輸入

命令1 |&命令2|命令1

將命令1的標準結果和標準錯誤資訊,輸出給命令2,作為命令2的輸入,再將命令2的結果輸出給命令3,作為命令3的輸入

在命令後加入&,可以讓命令到後台執行

command &

# gcc   myproc.c&

4,命令執行順序

分號,多個命令用分號隔開,最後乙個回車後,命令按順序執行

&&  連線連個命令,第乙個命令執行成功後才能執行第二個命令 

||      

連線連個命令,第乙個命令執行失敗後才能執行第二個命令 

5,shell萬用字元

?       表示任意單個字元

*       表示任意長度字元

[ ]     表示匹配[  ]給定字元集合的任意乙個字元

表示將中的字串,以及前導和後繼字元作為匹配條件

6,單引號,雙引號,反引號

單引號 括起來的字元都會變成普通字串

雙引號 括起來的字元除 $ "  `  \  外都會變成普通字串

反引號 括起來的字串會被作為命令執行

declare [-afirx]  宣告變數型別

-a    定義為陣列

-f     定義為函式

-i     定義為整數

-r     定義為唯讀

-x     定義為通過環境輸出比變數

declare -i    plaus=1+2+4*4-5

echo  plaus

test命令(如果不想使用tset可以使用「[ 表示式 ]」來代替,表示式前後有空格)

test  -e  file        測試檔案是否存在,存在為真

test -d  file         測試檔案是否存在且是目錄,是則為真

test  -x  file        測試檔案是否存在且可以執行,是則為真

test  -r  file        測試檔案是否存在且為唯讀,是則為真

test  -w  file       測試檔案是否存在且可寫入,是則為真

test  -b  file       測試檔案是否存在且為塊裝置,是則為真

test  -c   file       測試檔案是否存在且為字元裝置,是則為真

test  -s   file       測試檔案是否存在且長度大於0,是則為真

test  -f   file       測試檔案是否存在且是普通檔案,是則為真

數值比較測試

-eq       等於

-ne       不等於

-gt        大於

-lt         小於

-ge       大於等於

-le        小於等於

字串比較測試

-z     s1      如果字串s1的長度是0,值為真

-n     s2     如果字串s1的長度不為0,值為真

s1=s2       相等值為真

s1!=s2      不相等值為真

s1              如果字串s1不是空串,值為真

控制結構

if  then  else  fi

echo "press y to continue"

read yn

if [ "$yn"="y" ] || [ "$yn"="y"]; then echo "script is running"

else

echo "stop"

ficase  ......esac

echo "press you select "

read number

case  $number  in                       //如果沒有read 互動式輸入 ,直接輸入使用$1   即 (

case  $1  in  

)one)   echo   "you choice is one"

;;tw0)     echo   "you choice is two"

;;*)     echo   "usage "

exit 1

esac

for (( 條件1;條件2;條件3))

for var    in   var1   var2  var3

while[ 條件1 ] &&  [ 條件2 ]      當條件符合時就繼續

until [ 條件1 ] &&  [ 條件2 ]       直到條件符合時才繼續

函式函式名()

指令碼除錯

sh  [-nvx]   script.sh

-n   不執行指令碼,查詢指令碼內容語法,錯誤則列出    sh -n   script.sh

-v   執行指令碼之前先把指令碼內容顯示在螢幕上

-x   將用到的指令碼內容顯示在螢幕上

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的結果輸出到檔案...