当前位置:文档之家› 将DOS批处理文件转换为Shell脚本

将DOS批处理文件转换为Shell脚本

将DOS批处理文件转换为Shell脚本
相当多的在PC上学习脚本的程序员都在运行DOS。

事实上,残废的DOS批处理文件语言还是可以编写出一些比较强大的脚本来的,虽然它们一般都需要借助于外部的工具。

所以说,某些时候,我们还是需要将老式的DOS批处理文件转换为UNIX shell脚本。

一般来说,做这种事情并不困难,因为DOS批处理文件操作不过是等价的shell脚本的一个受限子集。

1.对照表
1.1.批处理文件关键字/ 变量/ 操作符
表格 L-1
批处理文件一般都包含DOS命令。

我们必须把它转换为UNIX的等价命令,这样我们才能把批处理文件转换为shell脚本文件。

1.2.命令
表格 L-2 DOS命令与UNIX的等价命令
事实上,几乎所有的UNIX和shell操作符,还有命令都有许多的选项,对比DOS 和批处理文件来说,它们要强大的多。

许多DOS批处理文件都需要依靠辅助工具,比如ask。

com,这是一个比read命令差很多的类似副本。

DOS对于文件名通配符扩展支持的非常有限,并且很不完整,仅仅识别*和?。

2.示例
将DOS批处理文件转换为sehll脚本,通常是一件很简单的事情,而且转换的结果通常都比原始的批处理文件好。

例子 L-1. VIEWDATA.BAT: DOS批处理文件
1 REM VIEWDATA
2
3 REM 灵感来自于例子"DOS POWERTOOLS"
4 REM PAUL SOMERSON编写
5
6
7 @ECHO OFF
8
9 IF !%1==! GOTO VIEWDATA
10 REM 如果没有命令行参数。

11 FIND "%1" C:\BOZO\BOOKLIST。

TXT
12 GOTO EXIT0
13 REM 打印出字符串匹配的行,然后退出。

14
15 :VIEWDATA
16 TYPE C:\BOZO\BOOKLIST.TXT | MORE
17 REM 显示整个文件,一次一页。

18
19 :EXIT0
转换脚本作了一些改进。

例子 L-2. Viewdata.sh: 转换自VIEWDATA.BAT的shell脚本
1 #!/bin/bash
2 # viewdata。

sh
3 # 转换自VIEWDATA.BAT的shell脚本。

4
5 DATAFILE=/home/bozo/datafiles/book-collection。

data
6 ARGNO=1
7
8 # @ECHO OFF 这个命令在这里就不需要了。

9
10 if [ $# -lt "$ARGNO" ] # IF !%1==! GOTO VIEWDATA
11 then
12 less $DATAFILE # TYPE C:\MYDIR\BOOKLIST.TXT | MORE
13 else
14 grep "$1" $DATAFILE # FIND "%1" C:\MYDIR\BOOKLIST.TXT
15 fi
16
17 exit 0 # :EXIT0
18
19 # 跳转,标签,还有其他一些小手段,在shell脚本中就不需要了。

20 # 我们可以说,转换后的脚本比原始批处理文件好的多,
21 #+ 它更短,看起来更整洁,更优雅。

相关主题