Shell 指令碼實踐

2021-07-25 19:04:58 字數 2812 閱讀 3272

shell 用 c 語言編寫的程式,既是一種命令列語言,又是一種程式語言,用 shell 編寫的稱為指令碼程式(shell script)

1、作為可執行程式

chmod +x ./test.sh

./test.sh

2、作為直譯器引數

sh test.sh
我們可以在執行指令碼時,傳遞引數,指令碼內獲取引數的格式為:

$n

# n 為指令碼引數的順序,從1開始

# $0 為當前執行的檔名

特殊引數

說明$#

傳遞的引數個數

$*將所有引數輸出為乙個字串

$$輸出指令碼當前執行的程序 id

$!後台執行的最後乙個程序的 id,測試失敗,返回空

$@所有引數的陣列引用

$-顯示 shell 使用的當前選項,與set命令功能相同

$?顯示最後的命令退出狀態,0表示沒錯誤 #

∗與@ 的區別

for i in 「∗」

;doe

cho i

done

# 1 2 3

for i in "$@"; do

echo $i

done

# 迴圈體執行了3次

echo "hello world"

echo hello world

echo "\"hello world"\"

echo "hello $"

echo "hello, \n"

# 顯示結果定向到檔案,覆蓋原檔案內容或者建立新檔案

echo "hello world" > myfile

# 顯示命令執行結果

echo `date`

printf format-string [arguments...]

# format-string 格式控制字串

# arguments 引數列表

printf 沒有自動換行,需要手動新增 \n

printf "%-10s %-8s %-4s\n" 姓名 性別 體重kg

printf "%-10s %-8s %-4.2f\n" 自超 男 90.1234

# 姓名 性別 體重kg

# 自超 男 90.12

%-10s 表示乙個寬度為10個字元的左對齊的字串,-表示左對齊,沒有-表示預設右對齊,如果超過10個字元,也會顯示,但是格式會被打亂

%-4.2f 表示浮點數,保留兩個小數

%c 表示單個字元

%d 表示整數

轉義序列

說明\a

警告字元

\b後退

\f換頁

\n換行

\r回車

\t水平製表符

\v垂直製表符

\反斜槓 \

\ddd

表示1到3位的八進位制字元

\0ddd

表示1到3位的八進位制字元

shell 的流程控制分支不能為空

函式定義通用格式

[ function ] funname [()]

# 中為可選項

demofun()

demofun

echo $?

# $? == 0

注意:所有函式必須先定義後呼叫

$?為函式返回值的呼叫

獲取函式引數,1,

2,,,,當 n>=10 時,$來獲取引數

特殊引數

說明$#

傳遞到函式的引數個數

$*以單字串顯示連線顯示所有引數

$@使用時用引號包裹,返回可遍歷的引數列表

輸入重定向

read film < hello

echo $film

# 獲取 hello 檔案中的內容,並輸出到終端

輸出重定向

echo 'test' > hello

# 將本要輸出到終端的 'test' 輸出到 hello 檔案中,覆蓋 hello 中原有的內容

定向符

說明command > file

重定向輸出覆蓋

command < file

重定向從檔案獲取輸入

command >> file

重定向輸出追加

n > file

將檔案描述符為 n 的檔案重定向到 file

n >> file

追加n >& m

將輸出檔案 m n 合併

n 將輸入檔案 m n 合併

檔案描述符 0 表示標準輸入 stdin

1 表示標準輸出 stdout

2 表示標準錯誤輸出 stderr

#!/bin/bash

#. ./config.sh

# 引入了 config.sh 後,可以使用在 config 中定義的變數和函式

Shell 指令碼實踐

1.指令碼判斷命令輸出是否為空 1 判斷字串為空 if str if x str x if z str n 為非空 注意 都要代雙引號,否則有些命令會報錯,養成好習慣吧!2.輸入y n 可以使用判斷符號進行資料的判斷,如檢查某變數是否為空 z shell 需要注意的是中括號 內的元件必須以空格隔開。...

shell指令碼實踐3 2018 03 29

1.echo 變數 1.txt 可以實現向檔案中輸入資訊 command 1.txt 可以實現向檔案中輸入資訊,是將命令執行的結果輸入檔案 2.wc l 1.txt 此命令統計檔案行數時,顯示結果為兩列,一列是行數,一列是檔名,如果只利用行數,需要用cut將其獲取出來 3.將從windows複製過來...

Shell指令碼實踐整理

準備 建立測試檔案 1.按行讀取檔案內容,且過濾包含 字元的行 bin bash file name test cat file name while read line do 過濾配置檔案中包含 的行if then continue fi echo done 結果 hrx test shell t...