日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
創(chuàng)新互聯(lián)Python教程:python和shell像嗎

python和shell都是我們經(jīng)常使用的腳本語(yǔ)言,平時(shí)python主要用來(lái)寫(xiě)一些小型的任務(wù),shell則在使用liunx系統(tǒng)部署任務(wù)的時(shí)候用的比較多,由于兩者有一些相似之處,時(shí)間長(zhǎng)了容易混淆,所以在這里給大家介紹一下兩者的用法區(qū)別。

變量

python定義和使用只需要使用變量名,例如:

var=“hello”
print var
# hello

shell定義變量只需要變量名,而使用變量的值則需要加$符號(hào),例如:

var="hello"
echo $var
# hello

數(shù)組的定義

python中沒(méi)有數(shù)組的概念,但是有l(wèi)ist,tuple,dict等可以代替其功能,聲明一個(gè)list并使用其中的一個(gè)元素,如下:

numbers=[1,2,3,4,5]
print numbers[0]
# 1

shell中只有一維數(shù)組,其聲明和使用方法,如下:

numbers=(1 2 3 4 5)
print ${numbers[0]}
# 1
#返回所有的值用
print ${numbers[*]}
# 1 2 3 4 5

注釋

python和shell都可以是用#號(hào)添加單行注釋,python可以使用”’注釋”’添加多行注釋。

相關(guān)推薦:《Python基礎(chǔ)教程》

邏輯判斷

條件的定義

在python中,除了所有的空值被認(rèn)為False外所有的值都被解釋為真True,這里的空值包括:None,0,”“,(),{},[]和False,下面是例子。

其他的由比較運(yùn)算符進(jìn)行比較支持,其中比較特殊的操作符有:

* x is y x和y是同一個(gè)對(duì)象

* x is not y

* x in y x在y集合中

* x not in y

邏輯預(yù)算法用and,or,not.

而shell的理念大不相同,它使用test命令來(lái)進(jìn)行條件測(cè)試,它通常寫(xiě)成[ condition ]的形式,注意方括號(hào)兩邊都要有空格,它支持三類測(cè)試:

* 數(shù)值比較,需要用-eq,-gt來(lái)代替==,>

* 字符串比較,可以用=,需要用-n之類的短命令,比如-n str來(lái)判定str長(zhǎng)度是否非零

* 文件比較,需要用短命令,例如-e file判斷文件是否存在

邏輯運(yùn)算符&&,||來(lái)連接不同的[ condition ]

另外,高級(jí)的數(shù)學(xué)表達(dá)式推薦使用(( expression ))邏輯判定,可以使用自增++,位移運(yùn)算符<<,位運(yùn)算符&,邏輯與&&等等

高級(jí)的字符串判定使用[[ expression ]]邏輯判定,可以用類似于正則表達(dá)式如[[ $teststr== r* ]]判定以r開(kāi)頭的字符串

shell的數(shù)值運(yùn)算推薦使用$[expression]的方式計(jì)算,浮點(diǎn)數(shù)的計(jì)算使用echo “expression”| bc的方式獲取計(jì)算值

if else

python中的if else使用方式如下,條件語(yǔ)句后加冒號(hào),并且以縮進(jìn)劃分語(yǔ)句塊

if condition:
    statement
elif condition:
    statement
else:
    statement

shell中則不同,其if else使用方式如下,它使用then和elseif或fi來(lái)界定語(yǔ)句塊,理論上不需要縮進(jìn)

if [ condtion ]
then
 statement
elif [condtion]
then
 statement
else
 statement
fi

for循環(huán)

python的for循環(huán)使用如下,仍然用縮進(jìn)劃分語(yǔ)句塊

for item in sequence:
    statement

shell中for的使用方式類似

for item in list
do
statement
done

其中shell取item的分隔符全局變量為IFS(internal field separator),其默認(rèn)值為空格,制表符,換行符,所以如果需要按行處理而忽略空格的話需要改變IFS的值。

另外shell還支持c語(yǔ)言形式的for循環(huán),它使用雙小括號(hào)來(lái)完成,形式如下:

for (( i=1; i<=10;i++))
do
 statement
done

while循環(huán)

python的while寫(xiě)法,如下:

while condition:
    statement

shell的while寫(xiě)法,如下:

while [ conditon ]
do
 statement
done

異常處理

python的異常處理方式

try:
    statement
except:
    statement
finally:
    finalStatement

shell中沒(méi)有相應(yīng)的異常處理機(jī)制,只有每條命名的錯(cuò)誤輸出描述符2,可以通過(guò)2>&1將錯(cuò)誤輸出重定向到標(biāo)準(zhǔn)輸出

文件操作

python使用open函數(shù),其有讀寫(xiě)模式有只讀r,只寫(xiě)w,添加a

myfile=open("filename","r")
myfile.readlines()
myfile.close()
with open("finename","w") as myfile:
    myfile.write("line\n")

shell讀取文件的內(nèi)容使用命令來(lái)讀取,然后使用管道或者重定向進(jìn)行輸入處理,常用的命令有:

1. cat filename 讀取文件的全部?jī)?nèi)容

2. tail -n 2 filename讀取尾兩行

3. head -n 2 filename讀取前兩行

一個(gè)經(jīng)典的問(wèn)題,讀取一個(gè)文件中的每一行做處理,使用python很簡(jiǎn)單。

with open("filename","r") as myfile:
    for line in myfile.readlines():
        print line

使用shell

cat filename|while read line
do
echo $line
done
#或者
IFS='\n'
for line in `cat  filename`
do
echo $line
done

函數(shù)

python的函數(shù)如下形式:

def functionname(params):
    '函數(shù)文檔'
    statement
    return value

其中函數(shù)文檔可以通過(guò)functionname.doc獲得

shell中函數(shù)形式

function functionname {
    commands
    return value
}

使用變量獲取返回值,參數(shù)通過(guò)函數(shù)functionname param1 param2的方式傳遞,通過(guò)$1,$2的方式取出第一第二個(gè)參數(shù),$#為參數(shù)數(shù)量,$*為所有參數(shù)。


新聞名稱:創(chuàng)新互聯(lián)Python教程:python和shell像嗎
網(wǎng)站URL:http://www.5511xx.com/article/dhsjpec.html