shell程式設計語法

2021-10-04 11:28:08 字數 3084 閱讀 9899

執行shell命令,需要在前面加echo

shell中變數:

$home :當前使用者主目錄

$pwd :當前執行命令的目錄

$user: 當前使用者

set: 顯示當前shell所有變數

export+ 變數名 :可把變數提公升為全域性環境變數

定義變數:

str=「hello world」

a=9a=ls -la反引號,執行裡面的命令,並把結果返回給變數a, 也可以寫成a=$(ls -la)

shell中特殊變數:

$? 表示上乙個命令退出的狀態

$$ 表示當前程序編號

$0 表示當前指令碼名稱

$n 表示n位置的輸入引數(n代表數字,n>=1)

$# 表示引數的個數,常用於迴圈

∗ 和*和

∗和@ 都表示引數列表

運算子:

格式 :expr m + n 或$((m+n)) 注意expr運算子間要有空格

計算(2 +3 )×4 的值

echoexpr \expr 2 + 3` * 4` 或 $(((2+3)*4))

for迴圈:

for n in 1 2 3

doecho $n

done

或者for ((i = 0; i <= 5; i++))

doecho 「welcome $i times」

done

while迴圈:

i=1while ((i<=3))

doecho $i

let i++

done

case語句:

case $1 in

start)

echo 「starting」

;;stop)

echo 「stoping」

;;*)

echo "usage: 「

esac

if判斷:

if condition

then

statements

[elif condition

then statements. …]

[else

statements ]

fi[ condition ] (注意condition前後要有空格)

[ condition ] && echo ok || echo notok 條件滿足,執行後面的語句

常用判斷條件:

= 字串比較

-lt 小於

-le 小於等於

-eq 等於

-gt 大於

-ge 大於等於

-ne 不等於

自定義函式:

function funname ()

命令列文字處理:

1、cut命令可以從乙個文字檔案或者文字流中提取文字列

選項與引數:

-d :後面接分隔字元。與 -f 一起使用;

-f :依據 -d 的分隔字元將一段資訊分割成為數段,用 -f 取出第幾段的意思;

-c :以字元 (characters) 的單位取出固定字元區間;

例如:將 path 變數取出,我要找出第五個路徑。

#echo $path | cut -d 『:』 -f 5

/usr/local/bin

2、sort 命令對 file 引數指定的檔案中的行排序,並將結果寫到標準輸出。

選項與引數:

-f :忽略大小寫的差異,例如 a 與 a 視為編碼相同;

-b :忽略最前面的空格符部分;

-m :以月份的名字來排序,例如 jan, dec 等等的排序方法;

-n :使用『純數字』進行排序(預設是以文字型態來排序的);

-r :反向排序;

-u :就是 uniq ,相同的資料中,僅出現一行代表;

-t :分隔符,預設是用 [tab] 鍵來分隔;

-k :以那個區間 (field) 來進行排序的意思

例如:/etc/passwd 內容是以 : 來分隔的,我想以第三欄來排序,該如何?

[root@www ~]# cat /etc/passwd | sort -t 『:』 -k 3

root❌0:0:root:/root:/bin/bash

uucp❌10:14:uucp:/var/spool/uucp:/sbin/nologin

operator❌11:0:operator:/root:/sbin/nologin

bin❌1:1:bin:/bin:/sbin/nologin

games❌12?games:/usr/games:/sbin/nologin

3、wc 統計檔案裡面有多少單詞,多少行,多少字元。

例如:#wc -m /etc/passwd #統計檔案的字元數

1719

4、awk命令

awk是乙個強大的文字分析工具,相對於grep的查詢,sed的編輯,awk在其對資料分析並生成報告時,顯得尤為強大。

例如:如果只是顯示/etc/passwd的賬戶

#cat /etc/passwd |awk -f 『:』 『』

root

daemon

binsys

5、sed命令例如:

$ sed 『s/test/mytest/g』 example

-----在整行範圍內把test替換為mytest。如果沒有g標記,則只有每行第乙個匹配的test被替換成mytest。

shell 程式設計2(語法)

if判斷結構 if expression then command fi if else判斷結構 if expression then command else command fi 巢狀if if expression1 then command1 elif expression2 then co...

shell程式設計及語法

bin sh echo hello world 執行方式如下 1 a.sh 要求有執行許可權 2 a.sh 後面3個不要求許可權 3 sh a.sh 4 source a.shshell指令碼的第一行也可以改為 bin bash,區別在於如果指令碼執行出錯了bash還會繼續執行,而sh則停止 輸入t...

SHELL程式設計語法彙總

注意!等號左右不能有空格 a 12 變數的定義,弱型別,可以用不同角度理解變數的型別可以是整型12,浮點型12,字串12 a helloworlda pwd a 字串拼接,zsh a 區域性變數 local a 12 位置變數 0 獲取當前正在執行的shell指令碼的檔名,包括路徑。類似c語言mai...