sitelink1 http://wiki.kldp.org/HOWTO/html/Adv-Bash...batch.html 
sitelink2  
sitelink3  
extra_vars6  
아주 많은 프로그래머들은 PC 위에서 도는 도스에서 스크립트를 배웠습니다. 기능이 조금 떨어지는 도스 배치 파일 언어로도 꽤 강력한 스크립트나 어플리케이션을 작성할 수도 있지만 그렇게 하려면 아주 해박한 지식을 사용해 해결책을 찾거나 꽁수를 부려야 합니다. 가끔은 오래된 도스용 배치 파일을 유닉스 쉘 스크립트로 변환해서 써야될 경우가 생기지만 이렇게 하는것이 그렇게 어렵지만은 않습니다. 왜냐하면 도스 배치 파일 연산자들이 기능이 동일한 쉘 스크립트 연산자의 서브셋에 불과하기 때문입니다.

표 G-1. 배치 파일 키워드/변수/연산자 와 그에 해당하는 쉘 동의어

배치 파일 연산자쉘 스크립트 동의어
%$명령어줄 매개변수 접두사
/-명령어 옵션 플래그
/디렉토리 패스 구분자
===(같음) 문자열 비교 테스트
!==!!=(다름) 문자열 비교 테스트
||파이프
@set +v현재 명령어를 에코하지 말 것
**파일명 "와일드 카드"
>>파일 재지향(덮어 쓰기)
>>>>파일 재지향(덧붙여 쓰기)
<<표준입력 재지향
%VAR%$VAR환경 변수
REM#주석
NOT!뒤에 나오는 테스트 부정
NUL/dev/null명령어 출력을 없애기 위한 "블랙홀"
ECHOecho에코 (Bash 에는 옵션이 많이 있음)
ECHO.echo빈 줄 에코
ECHO OFFset +v다음에 나오는 명령어를 에코하지 말 것
FOR %%VAR IN (LIST) DOfor var in [list]; do"for" 루프
:LABEL없음 (필요치 않음)라벨
GOTO없음 (대신 함수를 씀)스크립트의 다른 곳으로 건너 뜀
PAUSEsleep일정 간격을 두고 잠시 대기
CHOICEcase 나 select메뉴 선택
IFifif-test
IF EXIST FILENAMEif [ -e filename ]파일이 존재하는지 확인
IF !%N==!if [ -z "$N" ]변경가능한 매개변수인 "N"이 없다면
CALLsource 나 . (도트 연산자)다른 스크립트를 "포함"
COMMAND /Csource 나 . (도트 연산자)다른 스크립트를 "포함"(CALL과 동일)
SETexport환경 변수를 세트
SHIFTshift명령어줄 변수 목록을 왼쪽으로 이동(shift)
SGN-lt or -gt(정수) 부호(sign)
ERRORLEVEL$?종료 상태
CONstdin"콘솔"(표준입력)
PRN/dev/lp0(일반적인) 프린터 디바이스
LP1/dev/lp0첫번째 프린터 디바이스
COM1/dev/ttyS0첫번째 시리얼 포트

배치 파일은 대개 도스 명령어를 갖고 있습니다. 도스용 배치 파일이 쉘 스크립트로 변환되기 위해서는 이 명령어들은 꼭 동일한 유닉스 명령어로 변환되어야 합니다.

표 G-2. 도스 명령어와 동일한 유닉스 명령어

도스 명령어동일한 유닉스 명령어효과
ASSIGNln파일이나 디렉토리를 링크
ATTRIBchmod파일 퍼미션 변경
CDcd디렉토리 변경
CHDIRcd디렉토리 변경
CLSclear스크린 지우기
COMPcmp or diff파일 비교
COPYcp파일 복사
Ctl-CCtl-C정지(시그널)
Ctl-ZCtl-DEOF (end-of-file)
DELrm파일 삭제
DELTREErm -rf디렉토리의 하위 디렉토리까지 포함해서 삭제
DIRls -l디렉토리 보이기
ERASErm파일 삭제
EXITexit현재 프로세스 종료
FCcomm, cmp파일 비교
FINDgrep파일안에서 문자열 찾기
MDmkdir디렉토리 생성
MKDIRmkdir디렉토리 생성
MOREmore텍스트 파일 쪽단위(paging) 필터
MOVEmv이동
PATH$PATH실행파일들의 경로
RENmv이름 바꾸기(이동)
RENAMEmv이름 바꾸기(이동)
RDrmdir디렉토리 삭제
RMDIRrmdir디렉토리 삭제
SORTsort파일 정렬
TIMEdate시스템 시간 보여주기
TYPEcat파일을 표준출력으로 출력
XCOPYcp(확장) 파일 복사

참고: 사실 모든 유닉스, 쉘 연산자, 명령어들은 그들과 동일한 도스용보다 많은 옵션과 강력한 기능을 갖고 있습니다. 많은 배치 파일 스크립트들은 read의 불완전한 버전인 ask.com같은 외부 유틸리티에 의존합니다.

도스는 파일명 와일드 카드 확장에 대해서 오직 *? 문자만을 인식하는 제한되고 부족한 서브셋을 지원합니다.

도스 배치 파일을 쉘 스크립트로 변환하는 것은 일반적으로 매우 간단하고 가끔은 변환된 쉘 스크립트가 원래 도스 배치 파일보다 더 이해하기 쉬운 경우도 있습니다.

예 G-1. VIEWDATA.BAT: 도스용 배치 파일

REM VIEWDATAREM PAUL SOMERSON의 "DOS POWERTOOLS"의 예제에서 영감을 받아 작성@ECHO OFFIF !%1==! GOTO VIEWDATAREM  명령어줄 인자가 없다면...FIND "%1" C:BOZOBOOKLIST.TXTGOTO EXIT0REM  문자열이 일치하는 줄을 출력후 종료.:VIEWDATATYPE C:BOZOBOOKLIST.TXT | MOREREM  한 번에 한 쪽씩 전체 파일을 보여줌.:EXIT0

스크립트 변환을 하면 기능이 다소 개량됩니다.

예 G-2. viewdata.sh: VIEWDATA.BAT 의 스크립트 버전

#!/bin/bash# VIEWDATA.BAT 를 쉘 스크립트로 변환.DATAFILE=/home/bozo/datafiles/book-collection.dataARGNO=1# @ECHO OFF       여기서 이 명령어는 필요없습니다.if [ $# -lt "$ARGNO" ]    # IF !%1==! GOTO VIEWDATAthen  less $DATAFILE          # TYPE C:MYDIRBOOKLIST.TXT | MOREelse  grep "$1" $DATAFILE     # FIND "%1" C:MYDIRBOOKLIST.TXTfi  exit 0                    # :EXIT0# GOTO, 라벨, 속임수, 엉터리 구문등이 필요없어졌죠.# 원래 배치 파일보다 더 짧고, 더 쉽고, 더 깔끔합니다.

Ted Davis 의 Shell Scripts on the PC 사이트에서는 구식 배치 파일 프로그래밍에 대한 포괄적인 튜토리얼을 소개하고 있습니다. 생각건대, 그의 독창적인 몇몇 테크닉들은 쉘 스크립트와 연관성이 있습니다.

번호 제목 sitelink1 글쓴이 날짜 조회 수
75 Unicode Character 'COMMA' (U+002C)   황제낙엽 2011.11.28 51
74 윈도우7 단축키 모음   황제낙엽 2011.03.11 12
» 도스(DOS) 배치 파일을 쉘 스크립트로 변환 http://wiki.kldp.org/HOWTO/html/Adv-Bash...batch.html  황제낙엽 2010.07.23 242
72 [문법] bat(배치)파일 문법 http://blog.naver.com/faceuptoit?Redirec...0004435796  황제낙엽 2010.07.23 68
71 BAT 파일로 프로그램 실행 후 도스창 자동 닫기 http://blog.naver.com/parang3o?Redirect=...0107530173  황제낙엽 2010.07.23 126
70 [Batch]배치파일(.BAT)로, 파일 출력, 텍스트 파일(Text File) 만드는 방법 http://everdream.egloos.com/2971749  황제낙엽 2010.07.23 83
69 Information on batch files   황제낙엽 2010.07.23 80
68 [문법] 배치 프로그래밍 http://cafe.naver.com/mynet.cafe?iframe_...ticleid=13  황제낙엽 2010.07.23 84
67 [문법] 배치파일 문법(.bat) http://blog.naver.com/6420h?Redirect=Log...0095322019  황제낙엽 2010.07.23 77
66 Samba 설치   황제낙엽 2009.11.13 134
65 리눅스에서 파일 다운로드   황제낙엽 2009.11.13 13
64 리눅스 os(kernel) version 정보 확인   황제낙엽 2009.11.13 30
63 NetworkManager 관련   황제낙엽 2009.11.12 53
62 Fedora Network Manger(고정IP사용)   황제낙엽 2009.11.02 392
61 Fedora11 에서 Root로 로그인하는 법   황제낙엽 2009.10.30 12
60 Outlook 의 Default 경로   황제낙엽 2009.10.19 10
59 XP 정품 인증 알림창이 계속 뜰때 file   황제낙엽 2009.02.22 52
58 MSVBVM60.DLL file   황제낙엽 2009.02.19 20
57 듀얼코어 패치(INTEL AMD APPLE 총망라) file   황제낙엽 2009.02.01 61
56 [Fedora9] yum update 가 되지 않을 경우   황제낙엽 2008.10.17 14