将DOS批处理文件转换为Shell脚本
来源:互联网 发布:免费考勤软件 编辑:程序博客网 时间:2024/06/04 14:29
相当多的在PC上学习脚本的程序员都在运行DOS. 事实上, 残废的DOS批处理文件语言还是可以编写出一些比较强大的脚本来的, 虽然它们一般都需要借助于外部的工具. 所以说, 某些时候, 我们还是需要将老式的DOS批处理文件转换为UNIX shell脚本. 一般来说, 做这种事情并不困难, 因为DOS批处理文件操作不过是等价的shell脚本的一个受限子集.
表格 L-1. 批处理文件关键字 / 变量 / 操作符, 和等价的shell符号
批处理文件一般都包含DOS命令. 我们必须把它转换为UNIX的等价命令, 这样我们才能把批处理文件转换为shell脚本文件.
表格 L-2. DOS命令与UNIX的等价命令
事实上, 几乎所有的UNIX和shell操作符, 还有命令都有许多的选项, 对比DOS和批处理文件来说, 它们要强大的多. 许多DOS批处理文件都需要依靠辅助工具, 比如ask.com, 这是一个比read命令差很多的类似副本.
DOS对于文件名通配符扩展支持的非常有限, 并且很不完整, 仅仅识别*和?.
将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 #+ 它更短, 看起来更整洁, 更优雅.
Ted Davis的Shell Scripts on the PC站点上有许多关于老式的批处理文件编程的教程, 他使用的某些独创性的技术, 和shell脚本有异曲同工之妙.
阅读全文
0 0
- 将DOS批处理文件转换为Shell脚本
- 将DOS批处理文件转换为Shell脚本
- 将DOS批处理文件转换为Shell脚本(ZHUAN)
- 将shell脚本转换为二进制的可执行文件
- 怎样将shell脚本自定义为服务
- shell脚本dos问题
- 将小数转换为二进制的脚本
- UE 将DOS格式转换为UNIX格式
- dos2unix命令将dos文件转换为unix格式
- DOS 批处理文件
- DOS批处理文件
- DOS批处理文件
- DOS批处理文件
- DOS批处理文件
- DOS 批处理文件
- DOS批处理文件
- DOS批处理文件
- DOS批处理文件
- Apache Beam开发指南
- BZOJ 2763: [JLOI2011]飞行路线 分层图最短路
- iOS之UUIUIPickview (二)
- FFMPEG学习【libavformat】:实用函数
- Python设置浏览器宽高
- 将DOS批处理文件转换为Shell脚本
- java中this关键字的使用(code)
- PHP使用strtotime获取上个月、下个月、本月的日期
- Beam从零开始(一)
- 刷清橙OJ--A1072.潜伏者
- Z-STACK学习笔记-OSAL分析
- ACM总结
- Codeforces Puzzles
- Apache Beam 剖析