將DOS批處理檔案轉換為Shell指令碼
相當多的在PC上學習指令碼的程式設計師都在執行DOS. 事實上, 殘廢的DOS批處理檔案語言還是可以編寫出一些比較強大的指令碼來的, 雖然它們一般都需要藉助於外部的工具. 所以說, 某些時候, 我們還是需要將老式的DOS批處理檔案轉換為UNIX shell指令碼. 一般來說, 做這種事情並不困難, 因為DOS批處理檔案操作不過是等價的shell指令碼的一個受限子集.
表格 L-1. 批處理檔案關鍵字 / 變數 / 操作符, 和等價的shell符號
批處理檔案操作符 | Shell指令碼等價符號 | 含義 |
---|---|---|
% | $ | 命令列引數字首 |
/ | - | 命令選項標記 |
\ | / | 目錄路徑分隔符 |
== | = | (等於)字串比較測試 |
!==! | != | (不等)字串比較測試 |
| | | | 管道 |
@ | set +v | 不列印當前命令 |
* | * | 檔名"萬用字元" |
> | > | 檔案重定向(覆蓋) |
>> | >> | 檔案重定向(附加) |
< | < | 重定向stdin |
%VAR% | $VAR | 環境變數 |
REM | # | 註釋 |
NOT | ! | 取反 |
NUL | /dev/null | "黑洞"用來阻止命令輸出 |
ECHO | echo | 列印(Bash中有更多選項) |
ECHO. | echo | 列印空行 |
ECHO OFF | set +v | 不列印後續的命令 |
FOR %%VAR IN (LIST) DO | for var in [list]; do | "for"迴圈 |
:LABEL | 沒有等價物(多餘) | 標籤 |
GOTO | 沒有等價物(使用函式) | 跳轉到指令碼的另一個位置 |
PAUSE | sleep | 暫停或等待一段時間 |
CHOICE | case or select | 選單選擇 |
IF | if | if條件語句 |
IF EXIST FILENAME | if [ -e filename ] | 測試檔案是否存在 |
IF !%N==! | if [ -z "$N" ] | 引數"N"是否存在 |
CALL | source命令或.(點操作符) | "include"另一個指令碼 |
COMMAND /C | source命令或.(點操作符) | "include"另一個指令碼(與CALL相同) |
SET | export | 設定一個環境變數 |
SHIFT | shift | 左移命令列引數列表 |
SGN | -lt或-gt | (整形)符號 |
ERRORLEVEL | $? | 退出狀態 |
CON | stdin | "控制檯"(stdin) |
PRN | /dev/lp0 | (一般的)列印裝置 |
LPT1 | /dev/lp0 | 第一個列印裝置 |
COM1 | /dev/ttyS0 | 第一個串列埠 |
批處理檔案一般都包含DOS命令. 我們必須把它轉換為UNIX的等價命令, 這樣我們才能把批處理檔案轉換為shell指令碼檔案.
表格 L-2. DOS命令與UNIX的等價命令
DOS命令 | UNIX等價命令 | 效果 |
---|---|---|
ASSIGN | ln | 連結檔案或目錄 |
ATTRIB | chmod | 修改檔案許可權 |
CD | cd | 更換目錄 |
CHDIR | cd | 更換目錄 |
CLS | clear | 清屏 |
COMP | diff, comm, cmp | 檔案比較 |
COPY | cp | 檔案拷貝 |
Ctl-C | Ctl-C | 中斷(訊號) |
Ctl-Z | Ctl-D | EOF(檔案結束) |
DEL | rm | 刪除檔案 |
DELTREE | rm -rf | 遞迴刪除目錄 |
DIR | ls -l | 列出目錄內容 |
ERASE | rm | 刪除檔案 |
EXIT | exit | 退出當前程式 |
FC | comm, cmp | 檔案比較 |
FIND | grep | 在檔案中查詢字串 |
MD | mkdir | 新建目錄 |
MKDIR | mkdir | 新建目錄 |
MORE | more | 分頁顯示文字檔案 |
MOVE | mv | 移動檔案 |
PATH | $PATH | 可執行檔案的路徑 |
REN | mv | 重新命名(移動) |
RENAME | mv | 重新命名(移動) |
RD | rmdir | 刪除目錄 |
RMDIR | rmdir | 刪除目錄 |
SORT | sort | 排序檔案 |
TIME | date | 顯示系統時間 |
TYPE | cat | 將檔案輸出到stdout |
XCOPY | cp | (擴充套件的)檔案拷貝 |
事實上, 幾乎所有的UNIX和shell操作符, 還有命令都有許多的選項, 對比DOS和批處理檔案來說, 它們要強大的多. 許多DOS批處理檔案都需要依靠輔助工具, 比如ask.com, 這是一個比read命令差很多的類似副本. DOS對於檔名萬用字元擴充套件支援的非常有限, 並且很不完整, 僅僅識別*和?. |
將DOS批處理檔案轉換為sehll指令碼, 通常是一件很簡單的事情, 而且轉換的結果通常都比原始的批處理檔案好.
例子 L-1. VIEWDATA.BAT: DOS批處理檔案
|
轉換指令碼作了一些改進.
例子 L-2. viewdata.sh: 轉換自VIEWDATA.BAT的shell指令碼
|
Ted Davis的Shell Scripts on the PC站點上有許多關於老式的批處理檔案程式設計的教程, 他使用的某些獨創性的技術, 和shell指令碼有異曲同工之妙.
相關文章
- 使用批處理指令碼或SHELL配合SQL指令碼指令碼SQL
- bat批處理轉換成exe檔案BAT
- Shell指令碼逐行處理文字檔案技巧指令碼
- 切換IP批處理檔案
- DOS 批處理命令
- 編寫簡單的windows bat批處理指令碼檔案WindowsBAT指令碼
- dos批處理命令小記
- bat批處理常用指令碼BAT指令碼
- BAT 批處理指令碼 教程BAT指令碼
- 【轉】shell指令碼處理字串的常用方法指令碼字串
- window 批處理檔案
- 批處理檔案命令
- Windows批處理檔案Windows
- bat批處理檔案BAT
- 將Schema檔案轉換為Java檔案Java
- 部分Windows批處理指令碼整理Windows指令碼
- 如何將.ipynb檔案轉換為.py檔案
- 批處理實現的ip地址切換的複雜指令碼指令碼
- 批處理以當前時間為檔名建立檔案
- Python批處理:檔案操作Python
- 批處理檔案:將目錄下所有的jar檔案都加到CLASSPATHJAR
- 用shell處理二進位制檔案(轉)
- 使用shell指令碼build並建立ipa檔案(轉)指令碼UI
- DOS 批處理命令For迴圈命令詳解
- Shell指令碼 | 抓取log檔案指令碼
- windows 批處理備份目錄指令碼Windows指令碼
- 利用vbs指令碼將word文件轉換為pdf指令碼
- 使用shell指令碼替換csv檔案中的資料指令碼
- Linux 使用 shell 指令碼處理字串Linux指令碼字串
- aspose word轉換pdf檔案後將pdf檔案轉換為圖片png
- 07 Windows批處理之檔案操作Windows
- Dos批處理常用命令大全入門
- 精典的DOS批處理高階應用
- shell指令碼之批次清空檔案指令碼
- Linux下批量將md檔案轉換為html檔案LinuxHTML
- Linux程式設計:將PHP作為Shell指令碼使用(轉)Linux程式設計PHP指令碼
- 新方法:將PHP作為Shell指令碼語言使用(轉)PHP指令碼
- 批處理檔案 bat 後臺執行BAT