Appendix L. Converting DOS Batch Files to Shell...

Advanced Bash-Scripting Guide:
Prev Next

http://www.tldp.org/LDP/abs/html/dosbatch.html

--------------------------------------------------------------------------------

Appendix L. Converting DOS Batch Files to Shell Scripts

Quite a number of programmers learned scripting on a PC running DOS. Even the crippled DOS batch file language allowed writing some fairly powerful scripts and applications, though they often required extensive kludges and workarounds. Occasionally, the need still arises to convert an old DOS batch file to a UNIX shell script. This is generally not difficult, as DOS batch file operators are only a limited subset of the equivalent shell scripting ones.

Table L-1. Batch file keywords / variables / operators, and their shell equivalents

Batch File Operator Shell Script Equivalent Meaning
% $ command-line parameter prefix
/ - command option flag
/ directory path separator
== = (equal-to) string comparison test
!==! != (not equal-to) string comparison test
| | pipe
@ set +v do not echo current command
* * filename "wild card"
> > file redirection (overwrite)
>> >> file redirection (append)
< < redirect stdin
%VAR% $VAR environmental variable
REM # comment
NOT ! negate following test
NUL /dev/null "black hole" for burying command output
ECHO echo echo (many more option in Bash)
ECHO. echo echo blank line
ECHO OFF set +v do not echo command(s) following
FOR %%VAR IN (LIST) DO for var in [list]; do "for" loop
:LABEL none (unnecessary) label
GOTO none (use a function) jump to another location in the script
PAUSE sleep pause or wait an interval
CHOICE case or select menu choice
IF if if-test
IF EXIST FILENAME if [ -e filename ] test if file exists
IF !%N==! if [ -z "$N" ] if replaceable parameter "N" not present
CALL source or . (dot operator) "include" another script
COMMAND /C source or . (dot operator) "include" another script (same as CALL)
SET export set an environmental variable
SHIFT shift left shift command-line argument list
SGN -lt or -gt sign (of integer)
ERRORLEVEL $? exit status
CON stdin "console" (stdin)
PRN /dev/lp0 (generic) printer device
LPT1 /dev/lp0 first printer device
COM1 /dev/ttyS0 first serial port

Batch files usually contain DOS commands. These must be translated into their UNIX equivalents in order to convert a batch file into a shell script.

Table L-2. DOS commands and their UNIX equivalents

你可能感兴趣的:(Appendix L. Converting DOS Batch Files to Shell...)