中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

指紋鎖在什么網站做宣傳好/注冊網址

指紋鎖在什么網站做宣傳好,注冊網址,手機微信可以做網站嗎,要建設網站目錄 前言 一、概述 1、什么是shell? 2、shell腳本的用途有哪些? 3、常見的shell有哪些? 4、學習shell應該從哪幾個方面入手? 4.1、表達式 1)變量 2)運算符 4.2、語句 1)條件語句&am…

目錄

前言

一、概述

1、什么是shell?

2、shell腳本的用途有哪些?

3、常見的shell有哪些?

4、學習shell應該從哪幾個方面入手?

4.1、表達式

1)變量

2)運算符

4.2、語句

1)條件語句:

a)單分支if

b)雙分支if

c)多分支if

2)分支語句:

a)使用shell腳本編寫Nginx啟停命令

3)循環(huán)語句:

4.3、函數(shù)

4.4、正則表達式

1)基礎正則

a)查找特定字符

b)利用[]查找集合字符

c)查找行首"^"與行尾"$"?

?編輯

2)擴展正則

a)+,重復一個或一個以上的前一個字符

b)?,零個或者一個前一個字符

c)|,使用或者的方式找出多個字符

d)(),查找組字符串

e)()+,辨別多個重復的組

3)常見正則表達式

a)數(shù)字

b)字符串

c)Email

d)Url?

e)IP

f)Tel?

g)日期校驗

4.5、文件操作四劍客

1)grep進階

2)egrep

3)find進階

4)sed

a)語法

b)選項

c)操作

d)案例

5)awk

a)語法

b)選項

c)內建變量

d)案例:

5、使用shell腳本應該注意些什么?

5.1、shell命名

5.2、常見的shell腳本編寫規(guī)范

5.3、shell腳本

5.4、shell運行規(guī)則

5.5.、?shell腳本運行追蹤

6、read -p "提示語" 變量名

7、拓展知識

7.1、返回100內隨機數(shù)

7.2、返回1到10 的連續(xù)數(shù)字

7.3、返回1.1 2.1 3.1.... 10.1

二、表達式

1、變量

1.1、組成

1.2、類型

1)系統(tǒng)內置變量(環(huán)境變量)

2)自定義變量

3)位置變量

4)預定義變量

1.3、作用域

1.4、輸出

1.5、shell中的字符串

2、運算符

2.1、數(shù)學運算

2.2、賦值

2.3、比較運算?

1)數(shù)值比較

2)字符串比較

3)文件比較

2.4、邏輯運算符

總結


前言

? ? ? ?純屬本人個人看法,目前對shell腳本也是一知半解,經過查閱資料,整理內容,寫出這篇shell腳本基礎,大多數(shù)內容簡單易懂,可能會篇幅略長,請耐心觀看。

一、概述

1、什么是shell?

? ? ? ?Shell腳本是一種用于執(zhí)行一系列命令的腳本程序。它由一系列Shell命令組成,可以自動化執(zhí)行一些任務或操作。Shell腳本通常由文本文件組成,其中包含一系列命令,這些命令按照順序執(zhí)行。

2、shell腳本的用途有哪些?

? ? ? ?Shell腳本可以在Unix、Linux和類Unix系統(tǒng)(如Mac OS)中使用。它們使用Shell解釋器來執(zhí)行命令,并且支持多種Shell解釋器,如Bash、Sh、Ksh等。

? ? ? ?Shell腳本的目的可以是自動化常見任務,例如文件操作、系統(tǒng)管理、軟件安裝和配置等。它們可以接受命令行參數(shù)、進行條件判斷和循環(huán)操作,還可以利用變量、函數(shù)和控制流語句來實現(xiàn)更復雜的邏輯。

? ? ? ?編寫Shell腳本需要具備一些基本的Shell編程知識,包括如何聲明變量、使用條件語句、創(chuàng)建循環(huán)和函數(shù)等。腳本還可以利用系統(tǒng)提供的各種命令和工具來完成特定的任務。

3、常見的shell有哪些?

? ? ? ?常見的Shell腳本文件擴展名包括.sh(Bash腳本)、.sh、.ksh、.csh等,可以在Shell命令行中運行腳本文件,也可以將其配置為可執(zhí)行文件并直接運行。

? ? ? ?Bourne Shell (sh):Bourne Shell是Unix操作系統(tǒng)中最早的原始shell,它提供了基本的命令和功能。它的特點是簡單、高效,但功能相對有限。

? ? ? ?Bourne Again Shell (bash):Bash是Bourne Shell的改進版本,也是目前最常用的shell。它保留了Bourne Shell的特性,并增加了許多新功能,如命令補全、歷史命令、條件語句等,使得用戶交互更方便、功能更強大。

? ? ? ?C Shell (csh):C Shell是以C語言為基礎的shell,它提供了許多C語言風格的語法和功能,如循環(huán)、條件判斷、命令別名等。C Shell在交互性和用戶友好性方面有所提升。

? ? ? ? Korn Shell (ksh):Korn Shell是基于Bourne Shell的一個進化版本,它兼容Bourne Shell,并添加了許多新特性,如數(shù)組、命令行編輯等。Korn Shell是一種功能強大且通用的shell,被廣泛用于類Unix系統(tǒng)。

? ? ? ?Z Shell (zsh):Z Shell是Bourne Shell的擴展版本,它增加了更多的功能和特性,并提供了更好的用戶交互體驗。Z Shell支持命令補全、自動糾正命令、自定義主題等,使得使用起來更加方便和高效。

4、學習shell應該從哪幾個方面入手?

4.1、表達式

1)變量

? ? ? ?變量是計算機編程中用來存儲和表示數(shù)據的一個名稱,可以將其視為一個容器,用于存儲各種類型的值。變量在程序中可以被多次使用,并且可以在其中存儲不同的數(shù)據。

(個人感覺)歸根結底變量可分為三大類:

? ? ? ?系統(tǒng)變量:系統(tǒng)變量是指在操作系統(tǒng)中預先定義的變量,用于存儲一些系統(tǒng)級的信息或配置。系統(tǒng)變量可以被所有的程序或用戶訪問和使用。

? ? ? ?環(huán)境變量:環(huán)境變量是在操作系統(tǒng)中定義的一種特殊變量,用于存儲系統(tǒng)的各種配置信息、路徑和運行時參數(shù)。環(huán)境變量可以通過操作系統(tǒng)設置或在程序中動態(tài)定義和使用,對整個操作系統(tǒng)和所有程序起作用。常見的環(huán)境變量有PATH、HOME等。

echo $PATH  		命令所示路徑,以冒號為分割;
echo $HOME  		打印用戶家目錄;
echo $SHELL 		顯示當前Shell類型;
echo $USER  		打印當前用戶名;
echo $ID    		打印當前用戶id信息;
echo $PWD   		顯示當前所在路徑;
echo $TERM  		打印當前終端類型;
echo $HOSTNAME      顯示當前主機名;
echo $PS1           定義主機命令提示符的;
echo $HISTSIZE      歷史命令大小,可通過 HISTTIMEFORMAT 變量設置命令執(zhí)行時間;
echo $RANDOM        隨機生成一個 0 至 32767 的整數(shù);
echo $HOSTNAME      主機名

? ? ? ?用戶變量:用戶變量是指在特定用戶環(huán)境中定義的變量,用于存儲用戶自己的信息或配置。這些變量通常具有用戶自定義的名稱,并且只對該用戶有效。用戶變量可以用于個性化定制用戶的工作環(huán)境。

從上述類別分別延伸出以下變量類別:

? ? ? ?位置變量:位置變量是指在程序中根據其在參數(shù)列表中的位置來進行傳遞的變量。當程序調用函數(shù)或方法時,傳遞的參數(shù)可以按順序對應函數(shù)或方法定義中的參數(shù)位置。在命令行中執(zhí)行程序時,也可以通過位置參數(shù)傳遞數(shù)據。

? ? ? ?自定義變量:自定義變量是程序員自己聲明和定義的變量,用于存儲數(shù)據或表示特定的值。自定義變量的命名由開發(fā)者自己決定,可以根據需要進行賦值和操作。

? ? ? ?整型變量(int):整型變量用于存儲整數(shù)值,可以進行基本的數(shù)值運算。整數(shù)可以是正數(shù)、負數(shù)或零。例如,x = 5,y = -10。

? ? ? ?浮點型變量(float):浮點型變量用于存儲帶有小數(shù)點的數(shù)值,也可以進行數(shù)值運算。例如,x = 3.14,y = -0.25。

? ? ? ?字符串變量(str):字符串變量是用來存儲文本或字符序列的數(shù)據類型。字符串需要被包裹在引號(單引號或雙引號)內。例如,x = "Hello",y = 'World'。

? ? ? ?布爾型變量(bool):布爾型變量是用來存儲真(True)或假(False)的數(shù)據類型。它主要用于控制流程和條件判斷。例如,x = True,y = False。

? ? ? ?預定義變量是指在程序執(zhí)行過程中由解釋器或其他庫定義的變量。它們是一些特殊的變量,事先已經定義好,并具有特定的含義。在Linux操作系統(tǒng)中,一些常見的預定義變量包括:

ARGV:表示命令行參數(shù)的列表。

argc:表示命令行參數(shù)的數(shù)量。

ENV:表示操作系統(tǒng)的環(huán)境變量。

等等還有很多,這里就不一一列舉了。

2)運算符
算術運算符

用于執(zhí)行數(shù)學運算,如加法、減法、乘法、除法等。

常見的算術運算符有+-、*、/

比較運算符

用于比較兩個值或表達式的大小、相等性等關系。

常見的比較運算符有==、!=>、<、>=<=

邏輯運算符

用于對布爾值進行邏輯運算。

常見的邏輯運算符有andor、not

賦值運算符

用于將一個值賦給一個變量。

常見的賦值運算符有=、+=、-=、*=、/=

成員運算符

用于判斷一個值是否屬于一個集合(列表、元組、字典、集合等)。

常見的成員運算符有innot in

身份運算符

用于比較兩個對象的內存地址是否相同。

常見的身份運算符有isis not

位運算符

用于對二進制數(shù)進行位級操作。

常見的位運算符有&、|^、<<、>>

4.2、語句

1)條件語句:
a)單分支if

使用方式:

? ? ? ? ?if condition;then

? ? ? ? ?? ? ? ? ?command;
? ? ? ? ?fi

?編寫腳本查看

#!/bin/bash
#條件語句
#定義一個變量方便后續(xù)使用
user_num=$[ $(w | wc -l) -2 ]#單分支if
if [ $user_num -gt 2 ];thenecho "當前登錄過多!"
fi

賦予執(zhí)行權限并進行檢查

b)雙分支if

使用方式:

????????if condition;then

????????????????command;

? ? ? ? else

? ? ? ? ? ? ? ? command;? ? ? ??
????????fi

#!/bin/bash
#條件語句
#定義一個變量方便后續(xù)使用
user_num=$[ $(w | wc -l) -2 ]#雙分支if
if [ $user_num -gt 5 ];thenecho "當前登錄過多!"
elseecho "當時登錄用戶適中!"
fi

?

?

c)多分支if

使用方式:

????????if condition;then

????????????????command;

? ? ? ? elif

? ? ? ? ? ? ? ? condition;then

????????????????command;

? ? ? ? elif

? ? ? ? ? ? ? ? condition;then

????????????????command;

? ? ? ? else

????????????????command;
????????fi

#!/bin/bash
#多分支if#設定一個數(shù)值范圍
#A:90~100
#B:80~89
#C:60~79
#D:0~59read -p "請輸入你要查詢的成績:" score
if [ $score -lt 0 -o $score -gt 100 ];thenecho "輸入錯誤!請輸入0~100的數(shù)字進行查詢"$0
elseif [ $score -ge 90 -a $score -le 100 ];thenecho "等級:A  評定:優(yōu)秀"elif [ $score -ge 80 -a $score -le 89 ];thenecho "等級:B  評定:良好"elif [ $score -ge 60 -a $score -le 79 ];thenecho "等級:C  評定:及格"elseecho "等級:D  評定:不及格"fi
fi

2)分支語句:

case

使用方式:

? ? case $1 in
條件1)
?? ?語句
;;
條件2)+-+
?? ?語句
;;
*)
?? ?幫助信息
;;
esac

使用 case?編輯一個簡單的shell腳本:

#!/bin/bash
#簡單的case使用方式case $1 in
[0-9])echo "數(shù)字"
;;
[a-z]|[A-Z])echo "字母"
;;
*)echo "只能輸入數(shù)字或字母!請重新輸入:"
;;
esac

?

這里顯示11、aa、AA均不可用,因為我們在定義時,只定義了單數(shù)字或字母的查詢,如果需要顯示多數(shù)字或字母可以:

#!/bin/bash
#簡單的case使用方式case $1 in
[0-9]|[0-9][0-9])echo "數(shù)字"
;;
[a-z]|[a-z][a-z]|[A-Z]|[A-Z][A-Z])echo "字母"
;;
*)echo "只能輸入數(shù)字或字母!請重新輸入:"
;;
esac

a)使用shell腳本編寫Nginx啟停命令

剛才的腳本是一個簡單的case使用腳本,接下來我們配置一個簡單的 nginx 啟停腳本:

第一步:下載源碼包進行編譯安裝

nginx官方網站:nginx news

第二步:將下載好的軟件包放置在虛擬機中

第三步:解壓歸檔包并進行編譯安裝?

tar xf nginx-1.20.2.tar.gz 
cd nginx-1.20.2/

./configure --prefix=/usr/local/nginx

? ? ? ? 依次補全缺失的依賴:( ps:每次補全缺失的依賴時,需要再次進行一次上述./conmfig ...命令檢查是否缺失依賴,如有缺失,需執(zhí)行下述命令進行補充)

yum install -y pcre-devel
yum install -y zlib-devel

? ? ? ? 編譯安裝:

make && make install

?

安裝 nginx?時指定的路徑,nginx 啟動腳本所在位置:

?進入 /etc/init.d/ 編輯我們自己的啟停腳本

/etc/init.d/目錄解析:

? ? ? ?/etc/init.d目錄是用于存放系統(tǒng)啟動和停止的腳本文件的目錄。這些腳本文件通常在系統(tǒng)啟動和關閉過程中被執(zhí)行,用于啟動和停止各種系統(tǒng)服務和進程。這些腳本文件可以包含啟動、關閉、重啟和卸載等不同的操作,通過在相應的運行級別(runlevel)中執(zhí)行,控制系統(tǒng)服務的啟動和停止。

?創(chuàng)建腳本

vim /etc/init.d/ngninx
#!/bin/bash
#Nginx啟停腳本( start | stop | restart | reload ),支持多臺Nginx同時啟動。
#Mr.王#定義服務啟動優(yōu)先級
#chkconfig: 35 85 75#定義變量
NGINX="/usr/local/nginx/sbin/nginx"
ProfilePath=$2#使用定義if語句(雙分支)定義函數(shù)if [ -z $ProfilePath ];thenfunction start(){$NGINX}function stop(){$NGINX -s stop}function reload(){$NGINX -s reload}elsefunction start(){$NGINX -c $ProfilePath}function stop(){$NGINX -s stop -c $ProfilePath}function reload(){$NGINX -s reload -c $ProfilePath}fi
#設置開關語句case $1 instart)startif [ $? -eq 0 ];thenecho "+---------------------------------------------+"echo -e "|服務正在啟動 ------> OK!                     |"echo "+---------------------------------------------+"elseecho "+---------------------------------------------------------+"echo "|服務已啟動或出現(xiàn)其他故障,請依據提示信息進行排查!       |"echo "+---------------------------------------------------------+"fi;;stop)stop 2> /dev/nullif [ $? -ne 0 ];thenecho "+----------------------------------+"echo "|服務器未啟動,不需要停止!        |"echo "+----------------------------------+"elseecho "+----------------------------------+"echo "|服務正在停止 ------> OK!          |"echo "+----------------------------------+"fi;;reload)reloadif [ $? -eq 0 ];thenecho "+-------------------------------------+"echo "|平滑加載配置文件中 ------> OK!       |"echo "+-------------------------------------+"elseecho "+-----------------------------------------------------+"echo "|服務未啟動或者加載失敗,請依據錯誤信息進行排查!     |"echo "+-----------------------------------------------------+"fi;;restart)stop 2> /dev/null && startif [ $? -eq 0 ];thenecho "+-------------------------------------------------------+"echo "|服務重啟成功,正在加載 ------->                        |"echo "|                            服務加載完畢,Nginx  啟動!|"echo "+-------------------------------------------------------+"elseecho "+-----------------------------------------------------+"echo "|服務未啟動或者加載失敗,請依據錯誤信息進行排查!     |"echo "+-----------------------------------------------------+"fi;;*)echo "+---------------------------------------------------------------------+"echo "|請輸入正確選項: $0 | start | stop | restart | reload   |"echo "+---------------------------------------------------------------------+";;esac

?腳本寫完以后,賦予其執(zhí)行權限,對其進行檢測,看其是否正常工作

chmod +x /etc/init.d/nginx_scriprs

?兩種啟停方式:

./nginx_scriprs start
./nginx_scriprs stop
service nginx_scriprs start /usr/local/nginx/conf/nginx.conf
service nginx_scriprs stop /usr/local/nginx/conf/nginx.conf

重啟:?

?重載配置文件:

./nginx_scriprs reload
service nginx_scriprs reload /usr/local/nginx/conf/nginx.conf

啟動前先關閉服務,不然報錯信息顯示不出來

?然后將腳本交給 server 服務管理

?隨便進行輸入,檢測語句定義最后一個提醒內容:

./nginx_scriprs aaaaaaaaaaaa

至此,我們自己的Nginx啟停腳本就已編寫完畢,經測試,已經可以正常使用了。?

3)循環(huán)語句:

? ? for

for循環(huán)由while循環(huán)演變

? ? ? ? for 條件(i in 值)|((i=1;i<=10;i++))
do
?? ?語句
done

? ? while

? ? ? ? i=1????????????????

while 條件
do
?? ?語句
?? ?let ?i++
done

4.3、函數(shù)

在shell腳本中,有以下幾種類型的函數(shù):

? ? ? ?內置的函數(shù):這些函數(shù)是shell特定的,可以直接調用。例如,echo、cd、pwd等。這些函數(shù)通常用于執(zhí)行基本的系統(tǒng)操作。

? ? ? ?自定義函數(shù):這些函數(shù)是由用戶自己定義的,用于封裝一系列的操作,以便在腳本中多次調用。自定義函數(shù)以關鍵字function或函數(shù)名開頭,并在{}中包含函數(shù)的具體操作。

? ? ? ?外部命令函數(shù):這些函數(shù)實際上是調用外部命令或腳本文件??梢允褂?code>source或.來加載外部腳本文件,然后在腳本中調用外部腳本中的函數(shù)。

? ? ? ?匿名函數(shù)(匿名代碼塊):在某些shell解釋器中,可以使用{}來定義一個匿名函數(shù)或匿名代碼塊,然后在腳本中直接調用。

需要注意的是,不同的shell解釋器可能對函數(shù)的定義和調用方式有所不同。例如,Bash和Korn Shell(ksh)中的函數(shù)定義使用關鍵字function,而在其他Shell中,可以直接使用函數(shù)名進行定義。

4.4、正則表達式

? ? ? ?正則表達式(Regular Expression)是一種用于匹配、搜索和處理文本的強大工具,它可以通過一種簡潔的語法描述模式,并與文本進行匹配。

? ? ? ?標準正則擴展正則是正則表達式中的兩種語法標準。

? ? ? ?標準正則是指符合基本正則表達式語法標準的正則表達式?;菊齽t表達式語法只包含最基本的元字符和操作符,例如*+、.等。標準正則通常用于一些較舊的工具和操作系統(tǒng)中,如grep、sed等。

? ? ? ?擴展正則是在標準正則的基礎上擴展出來的更加強大和豐富的正則表達式語法。擴展正則語法引入了更多的元字符和操作符,例如{}、()、|等。擴展正則通常用于一些較新的工具和操作系統(tǒng)中,如egrep、awk等。

? ? ? ?需要注意的是,不同的工具和操作系統(tǒng)對正則表達式的支持可能有所差異,有些工具可能支持擴展正則,有些工具可能只支持標準正則。因此在使用正則表達式時需要根據具體的工具和環(huán)境選擇合適的語法標準。

在Shell基礎中,正則表達式通常用于以下操作:

? ? ? ?模式匹配:使用正則表達式可以匹配文本中符合某種模式的字符串。例如,可以使用正則表達式匹配所有以字母開頭的單詞。

? ? ? ?字符串搜索和替換:使用正則表達式可以在文本中搜索符合某種模式的字符串,并進行替換或修改。例如,可以使用正則表達式找到文本中的所有數(shù)字,并替換為特定字符串。

? ? ? ?字符串分割和提取:使用正則表達式可以將一個字符串分割成多個部分,或者提取出符合某種模式的子字符串。例如,可以使用正則表達式將一個CSV格式的文本分割成多個字段。

常見的正則表達式元字符包括:

? ? ? ?字符類:用方括號[]括起來,例如[abc]表示匹配單個字符a、b或c。

? ? ? ?元字符:具有特殊含義的字符,例如.表示匹配任意字符,*表示匹配前一個字符的零個或多個重復,+表示匹配前一個字符的一個或多個重復等。

? ? ? ?量詞:用于指定匹配的數(shù)量,例如{n}表示精確匹配n次,{m,n}表示匹配至少m次至多n次。

? ? ? ?錨點:用于指定匹配的位置,例如^表示匹配字符串開頭,$表示匹配字符串結尾。

? ? ? ?轉義字符:用于取消元字符的特殊含義,例如\可以將特殊字符轉義為普通字符。

? ? ? ?在Shell中,常用的正則表達式匹配工具包括grep、sedawk等命令。這些工具可以結合正則表達式來處理文本數(shù)據,并實現(xiàn)各種功能,如文本搜索、替換和處理等。

1)基礎正則

創(chuàng)建一個文件用于適配下列各項,內容如下:

shirt
short
good
food
wood
wooooooood
gooood
adcxyzxyzxyz
abcABC
best
besssst
ofion
ofson
ofison
AxyzxyzC
test
tast
hoo
boo
joo
a)查找特定字符
cat 1 | grep -n 'good'

b)利用[]查找集合字符
cat 1 | grep -n '[wg]ood'

?? ? ? ? ? ? 匹配 g 或者 w??

cat 1 | grep -n '[^o]'

? ? ? ? ? ? 排除o

?這里顯示排除不掉,因為符合條件 o 的還有很多

cat 1 | grep -n '[^hbjo]'

cat 1 | grep -n '[a-z]oo'

?? ? ? ? cat test.txt | grep -n '[0-9]'

c)查找行首"^"與行尾"$"?
cat 1 | grep -n '^[g]'

?

cat 1 | grep '\.$'
cat 1 | grep 'd$'

? ? ? ? ? ? \ 為轉義符

? ? d)查找任意一個字符"."與重復字符"*"

cat 1 | grep -n 'g..d'

cat 1 | grep -n 'ooo*'

? ? e)查找連續(xù)的字符范圍"{}",需要使用轉義符,"\{\}"

cat 1 | grep -n 'o\{2\}'

cat 1 | grep -n 'o\{2,5\}d'

cat 1 | grep -n 'o\{2,\}d'
2)擴展正則
a)+,重復一個或一個以上的前一個字符
cat 1 | grep -nE 'wo+d'
cat 1 | egrep -n 'wo+d'

?

b)?,零個或者一個前一個字符
cat 1 | egrep -n 'goo?d'

c)|,使用或者的方式找出多個字符
cat 1 | egrep -n 'a|b|c'

?

d)(),查找組字符串
cat 1 | egrep -n 't(a|e|s)st'

e)()+,辨別多個重復的組
cat 1 | egrep -n 'A(x|y|z)+C'

3)常見正則表達式
a)數(shù)字

創(chuàng)建隨機正整數(shù),負正整數(shù),正浮點數(shù),負浮點數(shù),用做實驗

echo $[$RANDOM%100] > 2
echo $[$RANDOM%100] >> 2
echo -$[$RANDOM%100] >> 2
echo -$[$RANDOM%100] >> 2
echo -$[$RANDOM%100].1 >> 2
echo -$[$RANDOM%100].1 >> 2
echo $[$RANDOM%100].1 >> 2
echo $[$RANDOM%100].1 >> 2

? ? ? ? “^[0-9]*[1-9][0-9]*$” //正整數(shù) ?

cat 2 | grep "^[0-9]*[1-9][0-9]*$"

?? ? ? ? “^((-\d+)|(0+))$” //非正整數(shù)(負整數(shù) + 0) ?

? ? ? ? “^-[0-9]*[1-9][0-9]*$” //負整數(shù) ??

cat 2 | grep "^-[0-9]*[1-9][0-9]*$"

? ? ? ? “^-?\d+$” //整數(shù)?

? ? ? ? “^\d+(\.\d+)?$” //非負浮點數(shù)(正浮點數(shù) + 0) ?

? ? ? ? “^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$” //正浮點數(shù)?

? ? ? ? “^((-\d+(\.\d+)?)|(0+(\.0+)?))$” //非正浮點數(shù)(負浮點數(shù) + 0)?

? ? ? ? “^(-?\d+)(\.\d+)?$” //浮點數(shù)?

b)字符串

? ? ? ? “^[A-Z]+$” //由26個英文字母的大寫組成的字符串 ?

? ? ? ? “^[a-z]+$” //由26個英文字母的小寫組成的字符串 ?

? ? ? ? “^[A-Za-z0-9]+$” //由數(shù)字和26個英文字母組成的字符串 ?

? ? ? ? “^\w+$” //由數(shù)字、26個英文字母或者下劃線組成的字符串

c)Email

? ? ? ? “^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$” //email地址 ?

? ? ? ? “^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$” ? //Email?

d)Url?

? ? ? ? “^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$” //url?

e)IP

? ? ? ? “^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$” ? //IP地址

f)Tel?

? ? ? ? /^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/ ? ? //電話號碼

g)日期校驗

? ? ? ? ? ?/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ ? // ?年-月-日 ? ?yyyy-MM-dd / yy-MM-dd 格式

? ? ? ? ? ?"^[0-9]{4}-((0([1-9]{1}))|(1[1|2]))-(([0-2]([0-9]{1}))|(3[0|1]))$" ? // 年-月- 日 ?yyyy-MM-dd 格式
?? ??? ? ?/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ ? // 月/日/年

4.5、文件操作四劍客

? ? ? ? 文件操作四劍客指的是Linux/Unix系統(tǒng)中的四個常用命令/工具,包括grep、awk、sed和find。這些工具都是用來處理文本文件的,可以通過各種方式查找、過濾和修改文件內容,是Linux/Unix系統(tǒng)中非常強大和靈活的工具。

? ? ? ?grep:grep命令用于在文本中搜索匹配指定模式的行,并將其打印出來??梢允褂谜齽t表達式進行模式匹配,支持在多個文件中搜索,具有強大的過濾和查找功能。

? ? ? ?awk:awk是一種數(shù)據處理和報表生成語言,也是一個命令行工具。它可以用來從文本文件中提取和處理數(shù)據,支持對文件的逐行掃描和處理,可以根據分隔符對數(shù)據進行分割,并根據需要進行計算和格式化輸出。

? ? ? ?sed:sed是一種流編輯器,用于對文本文件進行流式編輯。它可以按照指定的規(guī)則對文件進行替換、刪除、插入和追加等操作。sed具有強大的文本轉換和處理能力,是文本處理中的重要工具。

? ? ? ?find:find命令用于在指定目錄下搜索滿足指定條件的文件,并將其找出來??梢酝ㄟ^文件名、文件類型、文件大小、修改時間等多種條件進行查找。find命令還可以與其他命令配合使用,實現(xiàn)更復雜的文件操作。

? ? ? ?這四個工具在Linux/Unix系統(tǒng)中廣泛應用于文本處理、數(shù)據分析、系統(tǒng)管理等場景,可以大大提高工作效率和操作靈活性。

1)grep進階

? ? 選項

? ? ? ? -r? ? ? ? ? ? 遞歸掃描指定目錄下的每一個文件

? ? ? ? -l? ? ? ? ? ? 只顯示匹配到指定關鍵字的文件名,而不是文件內容

? ? 案例

? ? ? ? 查看/etc目錄下所有包含bash的文件名

grep -rl bash /etc

2)egrep

? ? 完美支持正則表達式

egrep(擴展的grep)是grep命令的一個變種,用于在文本文件中搜索匹配指定模式的行。它支持更廣泛的正則表達式語法,以及一些額外的功能。

與grep相比,egrep支持以下擴展的正則表達式元字符:

  • |:用于指定多個模式之間的"或"關系。
  • ():用于分組模式。
  • +:表示前面的模式出現(xiàn)一次或多次。
  • ?:表示前面的模式出現(xiàn)零次或一次。
  • *:表示前面的模式出現(xiàn)零次或多次。
  • {n}:表示前面的模式出現(xiàn)恰好 n 次。
  • {n,}:表示前面的模式出現(xiàn)至少 n 次。
  • {n,m}:表示前面的模式出現(xiàn) n 到 m 次。

此外,egrep還提供了一些命令行選項,如-i(忽略大小寫)、-v(反向匹配)等。

總的來說,egrep比grep更強大,更靈活,可以處理更復雜的模式匹配需求。但在許多系統(tǒng)中,grep和egrep是等效的,可互換使用。

3)find進階

? ? 按照權限查找

find -perm 755
find -perm 644

?

?? ? 按照時間戳查找

find -atime 1
find -mtime 1
find -ctime 1

?? ? -exec:

? ? ? ?-exec是 find 命令自帶的一個參數(shù),用于執(zhí)行一條命令來處理每一個查找到的文件(或目錄)。對于每一個匹配到的文件,都會調用一次命令,因此速度較慢。

find /opt/zn/ -type f -exec ls -lh {} \;

? ? xargs:

? ? ? ?而 xargs 是一個獨立的命令,它可以從標準輸入中讀取數(shù)據,并將其作為參數(shù)傳遞給其他命令執(zhí)行。相比于 -execxargs 可以批量處理文件,速度更快。

find /opt/zn/ -type f | xargs rm -rf

? ? ? ?注:結合上述,如果需要逐個處理每個文件,可以使用 -exec;如果需要批量處理文件,可以使用 xargs。?

4)sed
a)語法

? ? ? ? sed [選項] '操作' 參數(shù)?

? ? ? ? sed [選項] -f scriptfile 參數(shù)

b)選項

? ? ? ? -e:表示用指定命令或腳本處理

? ? ? ? -f:指定腳本文件

? ? ? ? -h:幫助

? ? ? ? -n:表示僅顯示處理后的結果

? ? ? ? -i:直接編輯文本文件

? ? ? ? -r:支持擴展正則

c)操作

? ? ? ? a:增加,在當前行下面以行增加指定內容

? ? ? ? c:替換,將選定行替換

? ? ? ? d:刪除,刪除指定行

? ? ? ? i:插入,在選定行的上面插入一行

? ? ? ? p:打印

? ? ? ? s:替換,替換指定字符

? ? ? ? y:字符轉換

d)案例

? ? ? ? 1.輸出符合條件的文本:

相當于cat

sed -n 'p' 1

?

?打印第3行

sed -n '3p' 1

打印第3到6行的內容

sed -n '3,6p' 1

打印奇數(shù)行

打印偶數(shù)行?

sed -n 'n;p' 1

打印1到6行之間的奇數(shù)行

sed -n '1,6{p;n}' 1

從第5行開始打印奇數(shù)行

sed -n '5,${p;n}' 1

匹配 abc

sed -n '/abc/p' 1

匹配從第5行開始到包含 oo 的行

sed -n '5,/oo/p' 1

?

? ? ? ? ? ? sed -n '/the/,10p' test.txt ?? ?#匹配從包含the的行到第10行結束

打印包含 oo 的行號

sed -n '/oo/=' 1

?

? ? ? ? 2.刪除符合條件的文本

刪除第1行

nl 1 | sed '1d'

?范圍刪除1-20行

nl 1 | sed '1,20d'

?

注:刪除時不能跳著進行刪除,不然會進行報錯。例如:

nl 1 | sed '1,3,5d'

刪除 good 所在行

nl 1 | sed '/good/d'

? ? ? ? 3.替換符合條件的文本

替換全文本

nl 1 | sed 's/oo/ZNZNZNZNZNZNZNZNZNZNZN/'

替換第4行

nl 1 | sed '3s/oo/ZNZNZN/'

替換匹配到的第 2 個 oo

nl 1 | sed 's/oo/OO/2'

?

注:這里可以看到,我們匹配出來的第一個 oo 并沒有任何變化,?

? ? ? ? 4.遷移符合條件的文本

? ? ? ? ? ? H:復制;g:覆蓋;G:追加行;w:保存;r:讀取;a:追加內容

? ? ? ? ? ? sed '/the/{H;d};$G' test.txt #匹配the所在行并遷移至文件末尾

? ? ? ? ? ? sed '3aTest' test.txt #在第3行下面新建行并寫入Test

? ? ? ? ? ? sed '/the/aTest' test.txt #匹配the所在行并在下一行寫入Test

? ? ? ? 5.使用腳本編輯文件內容

? ? ? ? ? ? vim opt.txt

? ? ? ? ? ? 1,5H

? ? ? ? ? ? 1,5d

? ? ? ? ? ? 16G

? ? ? ? ? ? sed -f opt.txt test.txt?? ?#將1到5行遷移至16行后

? ? ? ? 6.以上修改想要直接修改文本源文件,只需要加入選項"-i"

5)awk
a)語法

? ? ? ? awk 選項 '模式或條件{編輯命令}' 文件1 文件2 ...

? ? ? ? awk -f 腳本文件 文件1 文件2 ...

b)選項

? ? ? ? -F? ? ? ? ? ? 指定每行的分隔符(默認分隔符為空格)

c)內建變量

? ? ? ? FS:指定每行的分隔符

? ? ? ? NF:指定當前處理行的字段個數(shù)

? ? ? ? NR:當前處理行的行號

? ? ? ? $0:當前處理行的整行內容

? ? ? ? $n:當前處理的第n個字段

? ? ? ? FILENAME:處理文件名

? ? ? ? RS:數(shù)據記錄分隔,默認是\n

d)案例:

? ? ? ? 1.按行輸出

? ? ? ? ? ? awk '{print}' test.txt ?? ? ?? ?#等同cat?

? ? ? ? ? ? awk 'NR>=1&&NR<=3{print}' test.txt?

? ? ? ? ? ? awk 'NR==1,NR==3{print}' test.txt #打印1到3行

? ? ? ? ? ? awk 'NR%2==0{print}' test.txt ?? ?#打印偶數(shù)行

? ? ? ? 2.按段輸出

? ? ? ? ? ? 默認以"空格"分段!

? ? ? ? ? ? ifconfig ens33 |awk '/netmask/{print $2}' #篩選IP地址

? ? ? ? ? ? cat /etc/shadow | awk -F : '$2=="!!"{print $1}' #打印不能登錄系統(tǒng)的用戶

? ? ? ? 3.調用shell命令

? ? ? ? ? ? cat /etc/passwd | awk -F : '/bash$/{print | "wc -l"}' /etc/passwd ?? ?#統(tǒng)計能夠登錄系統(tǒng)的用戶個數(shù)?? ?

5、使用shell腳本應該注意些什么?

5.1、shell命名

? ? ? ?shell腳本的名稱一般命名為英文(大寫或xiaox),后綴以.sh、.zsh等結尾。不能使用特殊符合以及空格,最好是命名的時候一眼就能看出來這個腳本或命令是干什么用的,方便自己進行操作亦方便后面使用的人進行操作。

.sh這是最常見的Shell腳本后綴,表示該腳本是Bash Shell腳本
.bash這個后綴也用來表示Bash Shell腳本
.ksh表示Korn Shell腳本
.csh表示C Shell腳本
.tcsh表示Tenex C Shell腳本
.zsh表示Z Shell腳本
.shar表示Shell存檔,通常用于將多個Shell腳本合并為一個文件
.rpm表示RPM軟件包,其中可能包含Shell腳本
.ebuild表示Gentoo Linux系統(tǒng)中的Portage軟件包的構建腳本
需要注意的是,這些后綴并不是嚴格規(guī)定的,可以根據個人或組織的喜好進行自定義

5.2、常見的shell腳本編寫規(guī)范

? ? 通常情況下? 第一行? 為:

#!/bin/bash

? ? ? ? 一般情況下,使用Bash作為默認解釋器,可以寫為#!/bin/bash。這樣系統(tǒng)會自動調用Bash來解釋執(zhí)行腳本。如果需要使用其他Shell,可以相應修改為對應的路徑。

? ? 第二行? 為:

#腳本的說明

? ? ? ?在第二行可以寫上對腳本的簡短說明,用注釋符號"#"開頭。例如:# 腳本的說明。

? ? 第三行及以后? 為:

腳本正文

? ? ? ?從第三行開始,編寫腳本的正文部分,實現(xiàn)具體的功能。

此外,還有一些常見的Shell腳本編寫規(guī)范:

  • 使用有意義的變量名:使用有描述性的變量名,可以提高代碼的可讀性和可維護性。
  • 使用縮進:使用適當?shù)目s進來使代碼結構清晰,方便閱讀。
  • 添加注釋:在關鍵的地方添加注釋,解釋代碼的作用和用法,方便其他開發(fā)者理解和維護代碼。
  • 錯誤處理和日志記錄:對于可能出現(xiàn)錯誤的地方,進行錯誤處理,并記錄日志??梢允褂脳l件語句、函數(shù)等來實現(xiàn)錯誤處理和記錄日志的功能。
  • 使用函數(shù)和模塊化:將腳本分成多個函數(shù),提高代碼的可維護性和重用性。
  • 使用命令行參數(shù):可以為腳本添加命令行參數(shù),增加腳本的靈活性。
  • 添加退出狀態(tài)碼:在腳本結尾處使用"exit"命令并指定退出狀態(tài)碼,便于根據腳本的執(zhí)行結果進行后續(xù)處理。

5.3、shell腳本

? ?shell腳本的變量不能以數(shù)字、特殊符號開頭,可以使用下劃線( _ ),但不能使用破折號( - )

5.4、shell運行規(guī)則

? ? 沒有x權限

bash?腳本所在路徑/腳本文件
source 腳本所在路徑/腳本文件
. 腳本所在路徑/腳本文件

注:后兩個執(zhí)行命令,在腳本中若存在 cd 時,會切換到目標目錄

? ? 有x權限

./腳本文件
腳本絕對路徑/腳本文件

5.5.、?shell腳本運行追蹤

bash -x 腳本所在路徑/腳本文件

6、read -p "提示語" 變量名

? ? 讀取鍵盤輸入并賦值給變量名

7、拓展知識

7.1、返回100內隨機數(shù)

$[$RANDOM%100]

7.2、返回1到10 的連續(xù)數(shù)字

seq 1 10

{1..10}

7.3、返回1.1 2.1 3.1.... 10.1

{1..10}.1

seq 1.1 10.1

?

?

二、表達式

查看系統(tǒng)中支持的shell

cat /etc/shells

?

?查看系統(tǒng)默認shell

echo $SHELL

?

查看默認字符集

locale

?

1、變量

1.1、組成

? ? 變量名不會發(fā)生變化

? ? ? ? ? ? 例如:杯子、瓢、容器等等。

? ? ? ? 聲明規(guī)范

? ? ? ? ? ? 不能是數(shù)字或數(shù)字開頭

? ? ? ? ? ? 以字母或_開頭

? ? ? ? ? ? 變量名中不能包含特殊字符

? ? ? ? 聲明方法

? ? ? ? ? ? 駝峰式? ? ? ? ? ? ? ? ? ? ?userName

? ? ? ? ? ? 雙駝峰? ? ? ? ? ? ? ? ? ? ?UserName

? ? ? ? ? ? shell寫法? ? ? ? ? ? ? ? ?user_name

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? username

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? USERNAME

ps:字母全為大寫可稱為常量

? ? 變量值可以不斷發(fā)生變化(數(shù)字、字符)

? ? ? ? ? ? 例如上面提到的容器,其內所承載的物體

1.2、類型

1)系統(tǒng)內置變量(環(huán)境變量)
env

2)自定義變量
zn=zm

?

??? ? 等號兩邊不能有空格

? ? 數(shù)字形式:

zn=1

重復輸入同一條則上一條會被頂替。??

? ? 字符串形式:

? ? ? ? shell中可以不使用引號

? ? ? ? 當包含有空格時,需要使用引號

?? ? 引號的用法

? ? ? ? 不會引用變量值

? ? ? ? ? ? 單引號? ? ? ? ? ? ? ? '

? ? ? ? 會應用變量值

? ? ? ? ? ? 雙引號? ? ? ? ? ? ? ? "

? ? ? ? 引用命令結果

? ? ? ? ? ? 反撇號? ? ? ? ? ? ? ? `

? ? ? ? ? ? $(命令)? ? ? ? ? ? ? ? 應用場景較多

單引號‘’:強引用,六親不認,變量和命令都不識別,都當成了普通的字符串,“最傻”
雙引號”“:弱引用,不能識別命令,可以識別變量,“半傻不精”
反撇號··:里面的內容必須是能執(zhí)行的命令并且有輸出信息,變量和命令都識別,并且會將反向單引號的內容當成命令進行執(zhí)行后,再交給調用反向單引號的命令繼續(xù),“最聰明
引用變量命 令 執(zhí) 行 結 果 {} 命令執(zhí)行結果命令執(zhí)行結果()
運算$[] $(())
$() 或 ``引用命令執(zhí)行的結果
( ( ) ) 或 (()) 或(())或[]進行運算
使用或 " {}或"或"變量名” 劃定變量名的起止范圍

3)位置變量

? ? 腳本后參數(shù)所在的位置

? ? $1? ?~~? ? $9

系統(tǒng)定義下的? ls? 的帶顏色說明的,此時沒有,因為我們沒有進行定義。

?系統(tǒng)定義下的? ls

進行更改,使其帶有顏色

查看

4)預定義變量

創(chuàng)建一個腳本進行實驗,且注意前文命名規(guī)則!

vim shellscript.sh
chmod +x /root/shellscript.sh

注意:需要賦予腳本執(zhí)行權限( x )

?? ? $0? ? ? ? 腳本本身的名稱

 ./shellscript.sh 

?此時就陷入了無限調自己的命令(死循環(huán)),除非打斷進程運行(? ctrl+c? )

? ? $#? ? ? ? 腳本后參數(shù)的個數(shù)


? ? ? 此時我們可以看到,顯示了三個內容。?

?不管輸入的內容是否有效,$#只顯示數(shù)量

?? ? $*? ? ? ? 腳本運行時參數(shù)的內容(整體輸出)

?跟 echo 一樣,直接打印內容

?? ?$@? ? ? ? 腳本運行時參數(shù)的內容(逐個輸出)

這樣查看的話,$* 和 $@并沒有什么區(qū)別

我們寫一個簡單的腳本進行查看

?$* 整體輸出, $@ 單個輸出

?? ? $?? ? ? ? 腳本運行完畢后的返回值

?例如:

?? ? ? ? 默認情況

? ? ? ? ? ? 0? ? ? ? ? ? ? ? 成功

? ? ? ? ? ? 非0? ? ? ? ? ? 失敗

1.3、作用域

默認變量只在當前shell下生效

bash進行刷新

若要在當前及其子shell下生效,需要聲明為全局變量(? export? )? ?

1.4、輸出

echo $varName

1.5、shell中的字符串

? ? string

? ? 賦值: str1=foodfornoting.gpg

? ? 1)獲得字符串的長度

? ? 語法:?? ?${#StringName}

? ? 案例:?? ?echo ${#str1}

? ? 輸出結果:17

? ? 2)字符串取子串

? ? 語法:?? ?${#StringName:position:lenght}

? ? 案例:?? ?echo ${str1:0:3}

? ? 輸出結果:foo

? ? 注意:lenght沒有定義時,一直取到字符串的結尾!

? ? 3)字符串的截取

? ? a)從左至右截取最后一個匹配字符串string之后的所有字符串

? ? 語法:?? ?${StringName##*string}

? ? 案例:?? ?echo ${str1##*fo}

? ? 輸出結果:rnoting.gpg

? ? b)從左至右截取第一個匹配字符串string之后的所有字符串

? ? 語法:?? ?${StringName#*string}

? ? 案例:?? ?echo ${str1#*fo}

? ? 輸出結果:odfornoting.gpg

? ? c)從右至左截取最后一個匹配字符串string之后的所有字符串

? ? 語法:?? ?${StringName%%string*}?? ?

? ? 案例:?? ?echo ${str2%%o*}

? ? 輸出結果:f

? ? d)從右至左截取第一個匹配字符串string之后的所有字符串

? ? 語法: ${StringName%string*}

? ? 案例: echo ${str2%o*}

? ? 輸出結果:foodforn

? ? 4)字符串的拼接

? ? 語法:?? ?StringName3=${StingName1}${StringName2}

? ? 案例:?? ?str1=Hello

? ? ? ? str2=,Jack!

? ? ? ? str3=${str1}${str2}

? ? ? ? echo ${str3}

? ? 輸出結果: Hello,Jack!

? ? 5)字符串替換:

? ? 語法:?? ?${StringName/OldString/NewString}

? ? 案例:?? ?str1=foodfornoting.gpg

? ? ? ? echo ${str1/oo/kk}

? ? 輸出結果:fkkdfornoting.gpg

2、運算符

2.1、數(shù)學運算

+ - * / %+  等于加
-  等于減
*  等于乘
/  等于除
%  等于取余同時 * 作為乘號時需要加轉義符\    例如 \*

? ? ? ?在Linux操作系統(tǒng)中,反斜杠(\)被用作轉義字符,用于表示特殊字符或者序列。它可以與一些特定的字母或符號組合在一起,形成一種轉義序列,具有特殊的含義。

以下是一些常見的轉義序列和它們的含義:

? ? ? ?\n:表示換行符。在打印輸出或者文本編輯器中,\n會使得光標移到下一行的開頭。

? ? ? ?\t:表示制表符。在打印輸出或者文本編輯器中,\t會在當前位置插入一個制表符(通常是光標移到下一個制表符位置)。

? ? ? ?\b:表示退格符。在打印輸出或者文本編輯器中,\b會使得光標往前移動一個位置,可以用來刪除前一個字符。

? ? ? ?\r:表示回車符。在打印輸出或者文本編輯器中,\r會使得光標移到當前行的開頭,可以用來覆蓋之前的內容。

? ? ? ?\:表示反斜杠字符本身。在某些需要顯示反斜杠的情況下,需要使用兩個反斜杠來表示。

? ? ? ?此外,還有其他一些轉義序列,如\’表示單引號,\”表示雙引號,\a表示警報聲等。這些轉義序列可以在字符串或輸出格式中使用。

?? ? ? ? 運算方法

2.2、賦值

a=1
b=2
expr $a + $b

expr $((a+b))

echo $((a+b))

?

echo $[a+b]
expr $[a+b]

expr $a - $b

?

在乘作為運算時需要添加轉義符,因為 * 號有通配符的意思,代表所有

expr $a / $b

?

??? ? ? ? 注意

? ? ? ? ? ? shell不支持浮點數(shù)的顯示

?

2.3、比較運算?

&&條件 && 輸出結果
條件為真輸出
||條件 || 輸出結果
條件為假輸出
1)數(shù)值比較
-eq等于
-ne不等于
-lt小于
-le小于等于
-gt大于
-ge大于等于

2)字符串比較
=字符串一致
!=字符串不一致
-z?字符串為空
! -z?字符串不為空

3)文件比較
-e文件或目錄是否存在
-f是否為文件
-d是否為目錄
-r判斷文件是否可讀
-w判斷文件是否可寫
-x判斷文件是否可執(zhí)行

2.4、邏輯運算符

&&并且有假則假,全真為真
-a
||-o?或者有真則真,全假為假
!取反有真則假,有假則真

? ? ? 條件測試

[ $a -eq $b ] &&? echo OK
echo $?
[ $a -eq $b ] || ?echo OK
echo $?

總結

? ? ? ?在編寫Shell腳本時,可以參考官方文檔、教程和示例代碼等來學習和理解不同的概念和用法。最重要的是,要不斷練習和進行實踐。通過編寫簡單的腳本并逐漸增加復雜度,逐漸熟悉Shell腳本編程。網絡上有很多的shell腳本示例,大家可以多去觀摩借鑒,先了解命令的使用方式、語法等,再開始手動編寫腳本內容。

http://www.risenshineclean.com/news/31.html

相關文章:

  • 如何查看網站空間大小/個人發(fā)布信息免費推廣平臺
  • 加強政府網站建設的總結/西安seo代運營
  • 有做瀏覽單的網站/百度小說風云榜2022
  • 如何建設英文網站/淘寶店鋪買賣交易平臺
  • 開一個網站建設公司/it培訓四個月騙局
  • 廊坊市做網站/贛州seo排名
  • 手機商城網站開發(fā)/seo流量的提升的軟件
  • 做澳洲外貿的網站有哪些/港港網app下載最新版
  • 不懂代碼用cms做網站/h5制作
  • 好的做網站公司/營銷網站做的好的公司
  • 什么做網站/學生網頁制作成品
  • 福建建筑人才服務中心檔案/熱狗seo顧問
  • 做網站困難嗎/優(yōu)秀網站設計欣賞
  • 做貨到付款的購物網站/seo的中文含義是什么
  • 網站后臺是怎樣制作/經典軟文案例100例簡短
  • 2021年有沒有人給個網站/全網營銷系統(tǒng)
  • 長江設計公司/網絡優(yōu)化報告
  • 萬網網站備案多久/免費優(yōu)化網站
  • 上海網站排名優(yōu)化公司/谷歌seo快速排名軟件首頁
  • 網站建設開發(fā)平臺/網絡服務器的作用
  • 做平面什么網站好用/百度禁止seo推廣
  • 中國平面設計網站/廣告營銷案例分析
  • 網站建設橙子/百度教育app
  • 蘇省住房和城鄉(xiāng)建設廳網站首頁/百度應用市場app下載安裝
  • 做網站需要源碼/河南做網站優(yōu)化