python和shell像嗎
python和shell都是我們經常使用的指令碼語言,平時python主要用來寫一些小型的任務,shell則在使用liunx系統部署任務的時候用的比較多,由於兩者有一些相似之處,時間長了容易混淆,所以在這裡給大家介紹一下兩者的用法區別。
變數
python定義和使用只需要使用變數名,例如:
var=“hello” print var # hello
shell定義變數只需要變數名,而使用變數的值則需要加$符號,例如:
var="hello" echo $var # hello
陣列的定義
python中沒有陣列的概念,但是有list,tuple,dict等可以代替其功能,宣告一個list並使用其中的一個元素,如下:
numbers=[1,2,3,4,5] print numbers[0] # 1
shell中只有一維陣列,其宣告和使用方法,如下:
numbers=(1 2 3 4 5) print ${numbers[0]} # 1 #返回所有的值用 print ${numbers[*]} # 1 2 3 4 5
註釋
python和shell都可以是用#號新增單行註釋,python可以使用”’註釋”’新增多行註釋。
相關推薦:《》
邏輯判斷
條件的定義
在python中,除了所有的空值被認為False外所有的值都被解釋為真True,這裡的空值包括:None,0,”“,(),{},[]和False,下面是例子。
其他的由比較運算子進行比較支援,其中比較特殊的運算子有:
* x is y x和y是同一個物件
* x is not y
* x in y x在y集合中
* x not in y
邏輯預演算法用and,or,not.
而shell的理念大不相同,它使用test命令來進行條件測試,它通常寫成[ condition ]的形式,注意方括號兩邊都要有空格,它支援三類測試:
* 數值比較,需要用-eq,-gt來代替==,>
* 字串比較,可以用=,需要用-n之類的短命令,比如-n str來判定str長度是否非零
* 檔案比較,需要用短命令,例如-e file判斷檔案是否存在
邏輯運算子&&,||來連線不同的[ condition ]
另外,高階的數學表示式推薦使用(( expression ))邏輯判定,可以使用自增++,位移運算子<<,位運算子&,邏輯與&&等等
高階的字串判定使用[[ expression ]]邏輯判定,可以用類似於正規表示式如[[ $teststr== r* ]]判定以r開頭的字串
shell的數值運算推薦使用$[expression]的方式計算,浮點數的計算使用echo “expression”| bc的方式獲取計算值
if else
python中的if else使用方式如下,條件語句後加冒號,並且以縮排劃分語句塊
if condition: statement elif condition: statement else: statement
shell中則不同,其if else使用方式如下,它使用then和elseif或fi來界定語句塊,理論上不需要縮排
if [ condtion ] then statement elif [condtion] then statement else statement fi
for迴圈
python的for迴圈使用如下,仍然用縮排劃分語句塊
for item in sequence: statement
shell中for的使用方式類似
for item in list do statement done
其中shell取item的分隔符全域性變數為IFS(internal field separator),其預設值為空格,製表符,換行符,所以如果需要按行處理而忽略空格的話需要改變IFS的值。
另外shell還支援c語言形式的for迴圈,它使用雙小括號來完成,形式如下:
for (( i=1; i<=10;i++)) do statement done
while迴圈
python的while寫法,如下:
while condition: statement
shell的while寫法,如下:
while [ conditon ] do statement done
異常處理
python的異常處理方式
try: statement except: statement finally: finalStatement
shell中沒有相應的異常處理機制,只有每條命名的錯誤輸出描述符2,可以透過2>&1將錯誤輸出重定向到標準輸出
檔案操作
python使用open函式,其有讀寫模式有隻讀r,只寫w,新增a
myfile=open("filename","r") myfile.readlines() myfile.close() with open("finename","w") as myfile: myfile.write("linen")
shell讀取檔案的內容使用命令來讀取,然後使用管道或者重定向進行輸入處理,常用的命令有:
1. cat filename 讀取檔案的全部內容
2. tail -n 2 filename讀取尾兩行
3. head -n 2 filename讀取前兩行
一個經典的問題,讀取一個檔案中的每一行做處理,使用python很簡單。
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
函式
python的函式如下形式:
def functionname(params): '函式文件' statement return value
其中函式文件可以透過functionname.doc獲得
shell中函式形式
function functionname { commands return value }
使用變數獲取返回值,引數透過函式functionname param1 param2的方式傳遞,透過$1,$2的方式取出第一第二個引數,$#為引數數量,$*為所有引數。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4422/viewspace-2835951/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python能代替shell嗎?有什麼特點?Python
- Python的 is 和 == 弄懂了嗎?Python
- 00.Python manage.py shell和 Python的分析Python
- ToDesk勾上攝像頭會看到我嗎?如何關閉攝像頭
- 天呀!人工智慧會像Android和iOS一樣,歸於平淡嗎?人工智慧AndroidiOS
- java可以像python中的函式式工具裡的reduce那樣呼叫嗎?JavaPython函式
- python 呼叫 shell ,獲取返回值和返回資訊Python
- Simple python reverse shellPython
- Python呼叫shell命令Python
- shell 和程式
- 像智慧手機一樣造車,可能嗎?
- 現在的股市和1999年網際網路泡沫時像嗎?
- Shell程式設計-11-子Shell和Shell巢狀程式設計巢狀
- 如何使用PYTHON操作攝像頭Python
- Python中有重寫和過載的方法嗎?Python
- 使用Python和Java呼叫Shell指令碼時的死鎖陷阱PythonJava指令碼
- C++和Python學哪個好?Python學習難嗎?C++Python
- python就是爬蟲嗎-python就是爬蟲嗎Python爬蟲
- Python中is和==的區別有多大,你知道嗎?Python
- 教你如何利用python呼叫攝像頭Python
- 像老大一樣優化Python優化Python
- Python opencv USB攝像頭 讀寫PythonOpenCV
- [Shell] Sort 和 對齊
- CMD和power shell命令
- 像FIFA一樣踢球的AI,比打遊戲更強嗎?AI遊戲
- 各位友友,Tp 有技巧像Laravel一樣Ide提示嗎?LaravelIDE
- shell指令碼和python指令碼實現批量ping IP測試指令碼Python
- Plumbum - Python Shell CombinatorsPython
- python有前景嗎Python
- Python會消亡嗎?Python
- python很難嗎Python
- Linux中vim和shellLinux
- Linux shell 用法和技巧Linux
- Linux shell用法和技巧Linux
- 認識終端和shell
- 在ojb裡可以使用像poolman等的連線池嗎?
- 英語差能學好Python嗎?學Python有捷徑嗎?Python
- 如何呼叫python中的shell指令碼?Python指令碼