九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Linux Shell編程

 

正文

在linux系統(tǒng)中,我們一般都是用C語言寫服務端程序,但是一般我們不直接啟動這個程序,而是通過一個shell腳本啟動和關閉(需要設置一些環(huán)境變量和防止打開多個改程序,打開多個后需要找到pid才能關閉)

 

那么shell是什么呢?

說白了shell是操作系統(tǒng)提供給我們的一種語言,用來將用戶的命令輸送到內(nèi)核中執(zhí)行

 

shell編程

1首先我新建一個test2.sh,存放下面的一段shell代碼

2保存后,修改這個shell為可執(zhí)行文件 chmod +x test2.sh

#! /bin/sh#定義變量name=張三echo $nameecho "參數(shù):$*"echo "參數(shù)個數(shù)$#"

輸出結(jié)果:

下面分別介紹字段的含義

第一行:一般默認第一行都是上面這段#! /bin/sh,通知系統(tǒng)用/bin/sh來執(zhí)行下面的程序。

以“#”開頭的行代表注釋

echo代表輸出后面一段話的到用戶界面

$name代表使用了name這個變量(定義shell變量在下面介紹)

$* 代表所有的參數(shù)(我們在shell命令后面加了hello 和world兩個參數(shù))

$#代表參數(shù)的個數(shù)

 

有了初步的認識,我們就開始踏入shell編程吧!

1shell變量

定義shell變量:(注意等號左邊右邊不可以有空格)

shellname=value

使用shell變量

$shellname


2$數(shù)字

代表第幾個參數(shù)

例如$1代表第一個參數(shù),按照上面的代碼就是hello

還有下面的一些$符號的使用。

可能會對$?有一點費解,例如我們在shell中調(diào)用了一個C語言程序mydemo,其中mydemo這個主函數(shù)會返回100(這里不寫c代碼了)

#! /bin/sh./mydemoecho $?

shell輸出值:100

也可以是執(zhí)行一段shell函數(shù),獲取該函數(shù)的返回值(最后講函數(shù)說到)


3shell中執(zhí)行命令

如果我們想在shell中執(zhí)行一段命令,并將該命令的值存放到一個變量中,就要用到` `符號(在1數(shù)字旁邊)

#! /bin/shresult=`ls`echo result=$result

ls命令顯示當前文件夾下有哪些文件

輸出結(jié)果:result=test.sh ...


4讀取鍵盤

我們在運行shell的時候,可能需要我們輸入一些數(shù)據(jù),除了帶參數(shù)的方式我們還可以使用read進行讀

#! /bin/shecho "please enter a"read aecho "please enter b"read becho "a=$a,b=$b"

輸出結(jié)果:

read命令讀取一個輸入行,直至遇到換行符。

行尾的換行符在讀入時將被轉(zhuǎn)換成一個空字符

如果read命令后有變量名,輸入內(nèi)容賦給該變量。

如果read命令后未跟變量名,讀入的行將被賦值給內(nèi)置變量REPLY。


 shell也會像高級語言支持if,while等計算

if語句(兩種)

(一)第一種if(用來判斷條件是否正確)

格式:(fi代表這個if結(jié)束)

if (test condition) then  commandselse  commandsfi
test是一個固定關鍵字,用來判斷condition的描述是否正確
#! /bin/shif (test "start" =  "${1}" ) then        echo "start"else        echo "end"fi
執(zhí)行結(jié)果:

(二)第二種if(用來判斷文件或者文件夾是否存在)

格式:

if [ -option file]; then  commandselse  commandsfi

代碼:

#! /bin/shif [ -d "${1}" ]; then        echo existelse        echo notexistfi

運行

查看dir1文件夾是否存在,因為我創(chuàng)建了一個,所以是存在的。

其中還有一些其他選項


while循環(huán)

代碼格式:([右邊和]左邊都要有一個空格哦,done代表循環(huán)結(jié)束,當條件不成立時候循環(huán)結(jié)束)

while [ expr ];do  commandsdone

代碼demo(大家可以自己驗證哈)

#! /bin/shtmp=0while [ "$tmp" != "5" ];do        echo "curtmp=$tmp"        tmp=$[ $tmp + 1 ]done

 


case分支語句

同樣也支持像switch那樣的分支選擇語句的

代碼格式:(如果有一個pattern匹配到跟string內(nèi)容一樣,執(zhí)行這里面的內(nèi)容,否則執(zhí)行最下面的*分支,;;兩個分號代表退出case循環(huán),跟C語言的break)

case "string" inpattern_1)  commands;;pattern_2)  commands;;*)  commands;;esac

for循環(huán)

代碼格式:(會遍歷這個list數(shù)組,將當前值存放到varname變量中,后面的分號也是必不可少的哦

for varname in list ;do  commandsdone
代碼demo
#! /bin/shfor name in $*;do        echo "$name"done
上面的代碼會輸出所有的參數(shù)。

exit語句

跟C語言的exit很類似,代表退出當前shell
代碼格式:(code代表退出碼)
exit code
可以在一個Ashell中調(diào)用另一個Bshell,可以在Ashell通過$?得到Bshellexit退出嗎

函數(shù)

shell同樣也是支持函數(shù)的哈
代碼格式:(使用前必須先定義函數(shù))
function funcname{  commands}
代碼demo:
#! /bin/shfunction fun1{        echo "第一個參數(shù):$1"        echo "第二個參數(shù): $2"        return 100}fun1 3 4echo "函數(shù)返回值:$?"
上面代碼輸出什么大家應該知道了。可以再驗證一下

總結(jié)demo

 最后寫一個demo,代表打開某個進程(如果已經(jīng)打開就不再重復打開)
 #! /bin/shme=`whoami`PID=`ps -u $me |grep mydemo|awk {'print $1'}`if( test "$PID" = "" ) then        `mydemo`fi
PID的變量用來獲取mydemo的pid值,
grep代表搜索mydemo這個進程
awd標識輸出這一行的第一列,也就是pid的值
大家可以了解一下ps,grep,awk命令哈
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Shell技巧匯總 - 操作系統(tǒng) - linxh
Linux下如何復用外部shell腳本
Bash腳本編程基礎
Linux Shell腳本入門到實戰(zhàn)詳解
Ubuntu中文論壇 ? 查看主題 - [分享]Shell編程基礎
Linux Shell簡明教程(一) | 果凍想
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服