原文地址:WindowsBatch與LinuxShell比較[變量符號和關鍵字]html
一 簡單實例
1)batch fileshell
小結:
- batch file通常以bat或cmd爲後綴。
- 第一行爲@echo off表示關閉運行時batch file自己輸入,只輸出運行的結果。
- rem和::表示註釋。
2)shell filewindows
小結:
-shell file通常以sh,ksh,bash等結尾。
-第一行爲#!/bin/sh用來用那種shell解釋程序來解釋本shell腳本,由於shell有多種,常見的有sh,ksh,tsh,bash等。
-#用來在shell中表示註釋。
-shell file執行前須要修改權限爲可執行,例如:chmod a+x shellfile.sh。
二 變量
1)batch filebash
小結:
-用set來定義變量,=兩邊不能夠使用空格。
-變量間用;隔開。
-使用%%來使用變量的值。
2) shell filepost
小結:
-變量直接定義,且=兩邊不能有空格。
-變量間用:隔開。
-使用$來使用變量的值。
三 特殊變量
小結:
-能夠使用shift來使用超過10個變量。
-windows的batchfiles中%~dp0%表示當前文件的目錄。this
四 變量的特殊用法
變量的替換:
1)batch filelua
2)shell filespa
變量求子串:
1)batch file.net
2) shell file3d
shell file中的其餘的特殊用法:
五 Call/start/source/sh
1)batch file中call/start
call, 父bat中的vars能夠在子bat中訪問,且子bat的修改能夠返回到父bat中,或者若是子bat中新定義的vars也能夠帶回到父中。(由於最後子bat和父bat在執行時被合併爲同一個bat)。
Start,父bat中的vars能夠在子bat中訪問,可是子bat修改不會被反映到父bat中,且子中定義的變量不會被帶到父中。(子bat和父bat是獨立的進程)。
2) shell file中source/sh/.
Source同.命令,與batch file中的call相同,父shell中的vars能夠在子shell中訪問,且子shell的修改能夠返回到父shell中,或者若是子shell中新定義的vars也能夠帶回到父中。(由於最後子shell和父shell在執行時被合併爲同一個shell)。
Sh,同batch file的start,可是有區別,父shell中的vars不能被在子中訪問,且子中的修改不會被反映到父shell中,子中定義的變量不能被帶到父中。若是將父中的vars使用export導入子中,則在子中可見,可是修改仍不能被帶回父中。(子shell和父shell是獨立的進程)。
六 特殊符號
七 錯誤代碼
1) batch file
-errorlevel用來上次命令的返回值,若是爲0表示成功。
2) shell file
-$?用來表示上次命令的返回值,若是爲0表示成功。
3)2> file 表示將錯誤重定向到file,2>&1 表示將錯誤輸出重定向到與標準輸出相同。0表示標準輸入,1表示標準輸入,2表示錯誤輸出。
八 表達式計算
1)batch file
2)shell file
小結:Shell file中:1) 經常使用運算符號:++ Increment by one (prefix and postfix) — Decrement by one (prefix and postfix) + Plus - Minus * Multiplication / Division (with truncation) % Remainder ** Exponentiation[10] << Bit-shift left >> Bit-shift right & Bitwise and | Bitwise or ~ Bitwise not ! Logical not ^ Bitwise exclusive or, Sequential evaluation2) 字符串比較:< Less than > Greater than <= Less than or equal to >= Greater than or equal to == Equal to != Not equal to && Logical and || Logical or3) 整數比較:-lt Less than-gt Greater than-le Less than or equal to-ge Greater than or equal to-eq Equal to-ne Not equal to九 完!