Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> DOSバッチファイルをシェルスクリプトに変換する

DOSバッチファイルをシェルスクリプトに変換する

  

PC上でスクリプトを学習しているかなりの数のプログラマがDOSを実行していますが、実際には無効なDOSバッチファイル言語を強力なスクリプトで書くことができます。一般的には外部ツールに頼る必要がありますが、ある時点で、古いDOSバッチファイルをUNIXシェルスクリプトに変換する必要があります。ファイル操作の処理は、同等のシェルスクリプトの限定されたサブセットに過ぎません。表L-1。バッチファイルのキーワード/変数/演算子、および同等のシェル記号

バッチファイルオペレータシェルスクリプト同等の記号意味%$コマンドラインパラメータのプレフィックス/ - コマンドオプションタグ\\ /ディレクトリパスの区切り文字== =(等しい)文字列比較テスト!==!!=(等しくない)文字文字列比較テスト  |  Pipeline @set + vは現在のコマンドを印刷しません* * filename"ワイルドカード>>ファイルリダイレクト(上書き)>>>>ファイルリダイレクト(添付)<< redirect stdin% VAR%$ VAR環境変数REM#コメントNOT!コマンド出力を防止するためにNUL /dev /null"ブラックホール"を反転しますECHOエコー印刷(Bashの詳細オプション)ECHO。エコー印刷空白行ECHO OFF set + v後続のコマンドを印刷しません。FOR %% VAR IN(LIST)DO in var [list]; do" for"ループ:LABEL等価ではない(超過)ラベルGOTO等価ではありません(関数を使用)スクリプトの別の場所にジャンプしますPAUSE sleepしばらく待つか、caseを選択するか、メニューを選択します。if条件文の場合はIFを選択します。if [-e filename] IFのテストファイル!%N ==!if [-z" $ N"]パラメータ"; N "CALLソースコマンドがありますか。(ドット演算子)" include "他のスクリプトCOMMAND /Cソースコマンドまたは。(ドット演算子)" include "他のスクリプト(CALLと同じ)SET export set one環境変数SHIFT左シフトコマンドラインパラメータリストの移動SGN -ltまたは-gt(シェーピング)記号ERRORLEVEL $?終了ステータスCON標準入力「コンソール」(標準入力)PRN /dev /lp0(一般)印刷装置LPT1 /dev /lp0最初印刷デバイスCOM1 /dev /ttyS0の最初のシリアルポート

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

バッチファイルには通常DOSコマンドが含まれていますので、バッチファイルをシェルスクリプトファイルに変換できるように、UNIXの同等のコマンドに変換する必要があります。

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

フォームL-2。DOSコマンドとUNIXで同等のコマンド

DOSコマンドUNIXの同等のコマンド効果ASSIGN lnリンクファイルまたはディレクトリATTRIB chmodファイルパーミッションの変更CD cdディレクトリの置き換えCHDIR cdディレクトリの置き換えCLSクリア画面の比較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現在のプロセスFC comm、cmpファイルの比較FIND grepファイルMDで文字列を検索mkdir新しいディレクトリMKDIR mkdir新しいディレクトリ詳細ページ表示テキストファイルMOVE mvファイルを移動PATH $ PATH実行可能パスREN mv名前を変更(移動) RENAME mv名前変更(移動)RD rmdirディレクトリの削除RMDIR rmdirディレクトリの削除SORTソートファイルTIME日付表示システム時刻TYPE cat出力ファイルの標準出力へXCOPY cp(拡張)ファイルのコピー

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

注実際、ほとんどすべてのUNIXおよびシェル演算子、およびコマンドには、多くのものがあります。 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 | 16  MORE 17 REMはファイル全体を一度に1ページずつ表示します18 19:EXIT0

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

変換スクリプトがいくつか改善されました。

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

例L-2。viewdata.sh:VIEWDATA.BATから変換されたシェルスクリプト

1#!/bin /bash 2#viewdata.sh 3#VIEWDATA.BATシェルから変換スクリプト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から12少ない$ DATAFILE#TYPE C:\\ MYDIR \\ BOOKLIST.TXT |]  さらに13個以上14 grep" $ 1" $ DATAFILE#FIND"%1" C:\\ MYDIR \\ BOOKLIST.TXT 15 fi 16 17 exit 0#:EXIT0 18 19#ジャンプ、タグ、その他の小さな方法シェルスクリプトでは必要ありません20#変換されたスクリプトは元のバッチファイルよりはるかに優れていると言えます21#+短く、きれいでエレガントです。

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

PCサイトのTed Davis's Shell Scriptsには、昔ながらのものがたくさんあります。バッチファイルプログラミングチュートリアル
、彼が使用している独自のテクニック、およびシェルスクリプトでも同じ効果が得られます。

Copyright © Windowsの知識 All Rights Reserved