linux shell 腳本學習總結


 

shell 編程:

shell 開頭必須指定bash:#!/bin/bash

shell 的執行方式:

1.  ./1.sh    執行當前目錄下的1.sh,1.sh要是可執行文件

2.  bash  /usr/local/1.sh  

定義變量   aa=’qqq’        =兩側不能有空格,使用變量 ${aa}

Shell特殊含義變量

$$ 取當前腳本的進程id,就是pid

$0  取當前文件名

$n  n是大於0的數字,n是幾就是第幾個參數

$#  取參數的個數

$* 取所有參數

$? 取最有命令的退出狀態,0為沒錯誤

例如:

./1.sh  a b c 

Echo $$

Echo $0 

Echo $1 ,$2

Echo $#

Echo $@

Echo $?

 

 

Shell 運算符     + - * %   加減乘除

Shell 變量運算    $(()) ,$((4-2)),$(($a-$b))

Shell 關系運算符

-eq等於判斷,相等返還true

-ne 不等於判斷,不相等返回true

-gt大於判斷,如果大於返回true

-lt小於判斷,小於返回true

-ge大於等於,返回true

-le  小於等於,返回true

 

Shell 布爾運算

!取反,[!false] =true

-o 或運算 , [$a –lt 20 –o $b –gt 100]

-a 與預算,[$a –lt 20 –a $b –gt 100]

 

Shell 字符串運算

==    判斷兩個字符串是否相等,相等返回true  [$a ==$b]

!=     兩個字符串不相等,返回true  [$a != $b]

-z     檢測字符串長度是否為0,是返回true  [-z $a]

-n     檢測字符串長度是否不為0,不為0 返回true  [-n $a]

Str檢測字符串是否為空,不為空返回true ,[$a] 

 

Shell 文件測試運算符

-d  file   檢測文件是否是目錄文件,是返回true,[-d file]

-f file     檢測文件是否普通文件,是返回true

-r  file    檢測文件是否可讀,是返回true

-w  file   檢測文件是否可修改

-x file      檢測文件是否可執行

-s file      檢測文件是否問空,文件大小大於0,不為空,返回true

-e file      檢測文件是否存在,包含目錄文件

 

Shell 單引號和雙引號的使用

‘’中不能包含單引號,單引號中的轉譯字符\和變量$字符會原樣輸出,無實際意義

“”中不能包含雙引號,雙引號在的轉譯字符\和變量$字符是有實際含量的,可轉譯后和取變量后輸出

 

Shell 常見通賠符

“*”匹配0或多個字符

?匹配任意一個字符,a?b可匹配acb ,不能匹配ab

A[xyz]b  可匹配 ab之間有x,y,z任何一個的字符串,有且只能有一個,0和多個都不行

A[!xyz]b  匹配 ab之間只能有一個,且非x,y,z中的數據,如abb

A[1-9]    匹配1-9的任意一個,如a1,a9

A{abc,123}  匹配列表中的任何一個,如aabc,a123

 

Shell 特殊字符

=   變量賦值   a=1

$   取變量   $a

“>”輸出重定向   cat 1.txt 2.txt >3.txt,會覆蓋3.txt

“>>”輸出追加重定向  cat 1.txt 2.txt >> 3.txt ,追加到3.txt后

“<”輸入重定向

&后台運行命令

;命令分割符,允許一行寫多條命令

&&若前一條命令執行成功,繼續執行下一條命令

||   前一條命令執行不成功,執行下一條命令

!4  執行history中的第4條命令

 

Shell數組操作

Array=(a1 a2 a3)     數組元素用空格分割,shell只支持1維數組

A[0]=1 ;A[1]=2         通過賦值的方式定義數組

數組的取值方式

${數組名[index]}         如 ${a[0]}

${a[*]},${a[@]}           獲取數組的所有元素

Len=${#a[*]}             獲取數組的長度

 

Shell 的if 判斷

格式:

If [條件成立]

Then

語句

Else

不成立執行語句

Fi

例:

#!/bin/bash

File=”/usr/local/1.sh”

If [-x $file]

Then

Echo $file

Else

Touch $file

Chmod +x $file

Fi

 

Shell 的 case esac判斷

格式:

Case 值 in

值1)

命令

;;;;同break,跳出語句

值2)

命令

;;

*)

命令

;;

Esac

例:

#/bin/bash

a=$1

Case $a in

r)

bash  /usr/local/1.sh

;;

c)

touch /usr/local/2.sh

;;

d)

rm–rf /usr/local/2.sh

;;

*)

Bash /usr/local/1.sh

;;

Esac

 

 

Shell for 循環

格式:

For 變量 in 列表

Do

命令

命令

Done

例:用for和if,遍歷/root目錄下的所有文件,打印出來可執行的文件

#!/bin/bash

Path=’/root’

For file in $path/*

Do

If [-x $file –a –f $file]    #file是可執行文件and file是普通文件

Then

Echo $file

Fi

done

 

 

shell while循環

格式:

while 條件

do

命令

done

 

shell中的函數

function 函數名()

{

命令

Return x

}

例:

#!/bin/bash

functionshowsh()

{

for file in $1/*.sh

do

echo $file

done

}

showsh $1

 

 

 

 

 

 

配置定時任務:

vi  /etc/crontab     定時任務配置

crontab 文件配置  M H D m d cmd    M 分鍾(0-59) H 小時(0-23) D 天(1-31)

m 月(1-12),d 一星期的天數(0-6,0位星期天)

*/5  * * * * sh /usr/locat/1.sh  沒隔5分鍾執行一次

30  21 * * * /usr/local/apache/bin/apachectl restart  每晚21:30重啟apache

 

軟件安裝:

rpm -ivh jdk.rmp    安裝jdk ,-i 安裝,-v 顯示安裝信息,-h 顯示安裝進度

rpm -e  jdk.rpm    卸載jdk

rpm -qa 查詢已安裝的軟件包

yum  install httpd  安裝apache

yum list|grep httpd  從yum列表查詢需要的包

yum update httpd   升級apache

yum list installed |grep httpd  查詢是否安裝了apache

yum remove mysql  卸載yum安裝的mysql

 

源碼安裝:

yum install gcc*    gcc  c++的編譯器

1.生成makefile 編譯文件

./configure 一般安裝包下都有一個configure 文件,用來生成makefile 編譯文件

./configure --prefix= /usr/local/apache  --with= /aa/cc    --prefix 指定安裝目錄,--with 指定倚賴文件目錄

2.make  編譯 makefile文件

make 也需要安裝,yum install make,makec,makeg

3.make install

make install  把編譯好的文件復制到--prefix 指定的目錄,如果未指定就是當前目錄

 

 

linux相關目錄文件存放內容:

bin  存放普通程序,所有用戶都可以用

boot 存放內核及啟動所需要的文件

dev 存放設備相關文件

etc 存放系統配置文件

home  存放用戶文件的主目錄

lib  存放啟動時的庫文件

mnt 存放臨時的映射文件,可以用來掛載usb

proc 存放當前系統狀態,進程

root 超級用戶主目錄

sbin  存放需要的系統管理程序

tmp  存放啟動產生的臨時文件

var  存放系統產生的經常變化的文件

 

系統cpu及內存的信息文件:

/proc/cpuinfo    cpu信息

/proc/dma     dma通道

/proc/filesystems  文件系統信息

/proc/interrupts  主機中段信息

/proc/ioports   i/o 端口信息

/proc/meminfo  查看內存信息

/etc/passwd   用戶詳細信息

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM