linux shell 指令碼基礎知識學習

2021-06-11 07:47:19 字數 2053 閱讀 9457

shell指令碼:

1、#!  指定指令碼執行的shell

2、# 注釋 

3、命令或語法結構

echo "輸入內容"

echo 輸出空行

執行:

1、shell 指令碼

sh example

2、給shell指令碼執行許可權

chmod u+x example

案例:example  sysinfo.sh

3abc  x  不能以數字開頭

abc3

abc3

環境變數-大寫

命令執行結果賦值變數使用 命令替換符 ``

path=$path:/root/shell.example

ls -l /etc/inittab /etc/fstab /etc/services

$0      $1           $2         $3

$0-$9

$*  /etc/inittab /etc/fstab /etc/services

$#  3

$$  pid

$?  命令返回值   0  非0

案例:special.var

read  案例:read

expr 運算子前後要空格,乘號*要加轉義符

案例:expr

test

1、字串測試    是否相等、是否為空

2、整數測試   相等、大於、小於

3、檔案測試   檔案型別、檔案許可權、檔案存在、檔案大小

單支迴圈:if/then

if 測試條件

then 

執行操作 fi

sh -x 指令碼      在執行時顯示執行過程   +或++ 注釋

*/2 12-14 * 3-6,9-12 1-5 /root/shell-example/apache.test

雙支迴圈:if/else

if 測試語句

then 

真: 操作

else

假: 操作 fi

案例:test.apache  autobak.sh

tar -cf 新檔名 目錄

多支迴圈: if/elif

案例: if_else  判斷檔案型別

條件連線 -o 邏輯或or  -a 邏輯與and

exit退出語句

if [ "$#" != 2 ]

then

echo " must two parm!" fi

echo "this is a test"

echo $1 $2

sh exit first

條件為真退出 exit 0    條件為假退出 exit 1 非0 

新增exit語句 sh exit first

for迴圈

案例:for  自動將使用者踢出系統 killuser.sh

awk -f域分隔符 '命令'     預設分隔符就是空格

統計系統使用者數

awk -f: '$3>=500 ' /etc/passwd | grep -v nfsnobody | wc -l

awk -f: 'length($2)==0 ' /etc/shadow

case    案例:case    /etc/rc.d/init.d/httpd

while   條件為真一直迴圈   案例:while  useradd.sh

until   條件為假一直迴圈

echo 密碼 | passwd --stdin 使用者名稱

while計數迴圈

windows寫指令碼會有不可識別控制符要處理

dos2unix 指令碼 

Linux Shell指令碼基礎

shell指令碼在處理自動迴圈或大的任務方面可節省大量時間,且功能強大。任何指令碼都可能有注釋,加注釋需要此行的第乙個字元為 直譯器對此行不予解釋。指令碼不是複雜的程式,它是按行解釋的。指令碼第一行總是以 bin sh開始,這段指令碼通知shell使用系統上的 bourne shell直譯器。指令碼...

Linux shell指令碼基礎

ls 列出目錄下的清單 cat 連線顯示檔案內容 less more 分頁顯示檔案內容,建議使用less,相比於more更方便 head 顯示檔案頭部,可指定行數,預設顯示10行 tail 顯示檔案尾部,可指定行數,預設顯示10行 file 顯示檔案型別 wc 檢視檔案或統計資訊 find 查詢檔案...

linux shell指令碼基礎 3

6.函式 function name 注意 必須在呼叫乙個函式之前先對它進行定義,不存在前向宣告 當乙個函式被呼叫時,指令碼程式的位置引數 1,2等 會被替換為函式的引數。這也是讀取傳遞給函式的引數的辦法。當函式執行完畢後,這些引數會恢復為它們先前的值。可以通過return命令讓函式返回數字值 注意...