シェルプログラミング問題(D)

現在のディレクトリ内のすべての.cファイルをコンパイルします。

#!/ binに/ bashの

IF [-LT- $#1。 ]; その後、   argvの中に#入力パラメータが$#よりも小さい場合== C言語[ 0 ]入力パラメータの数は
         エコー " フォローアップFILE.Cてください!" 
    エコー " :./make.sh xxx.c EG " 
        出口
Fiの

IF [[$ 2 = " デバッグ" ;]] 次に  #デバッグ第三のパラメータは、その後であれば、デバッグコンパイルさ
    FILE2 = $を1つの
    エコー$ {} FILE2 
    NAME = $ {FILE2%。*}#インターセプト入力ファイルをコンパイルする。内容は、そのようなNAME = hello.cの前にこんにちは
     エコー " NAME "
    エコー$ {NAME}
     GCC -g $ FILE2} {} -o $ {#名+ - G GDBデバッガのための
    {}のGDB NAME $ 

                  #そうでなければ実行直接
    FILE1 = $ 1件のである。
    NAME = *%の$ {FILE1。}
     GCC $ {FILE1} - OのNAME} {$ 

    IF [-R&LT名$ {}]; その後、
        エコー " !以上、テストファイルは生き物ですが" ;  / $ {NAME}
     
        エコー" エラー!" 
    Fiの

Fiの
    

Cコードのデバッグをコンパイルするために指定。

./make.shファイル名(必須)デバッグ(デバッグオプション)

 

#!/ binに/ bashの

ための ファイル の中で/ * .C 
行う
    場合[-f $ファイル];次に
        = $ {ファイル#/}ファイル
        ターゲット= $ {ファイル%.C} 
        エコー"ファイル$ {ファイル}" 
        エコー"標的$ {対象}" 
        GCCを- O $ターゲット$ファイル
        エコー$目標
    Fiの
    
    [-d $ファイル]の場合は、次に
        $ファイルが辞書であるエコー
    Fiの
完了

 

exbotする@ Ubuntuの:〜/ shareWin /シェル/ 20190925 $ ./4.sh
ファイルのhello.cの
ターゲットハロー
ハロー
ファイルworld.cの
ターゲット・ワールド
の世界

以下のための ファイル の中で/ * .P

この文は、実行後などのhello.cとして./で始まる現在のディレクトリ内のすべての.cファイル、探しているが./hello.cなることを意味します

ファイル = $ { ファイル#。/}

これは、一番左./内のファイル名の前にすべての文字を破棄することです。変換後のhello.c ./hello.cたとえば、

 

ファイル= / DIR1 / DIR2 / DIR3 / my.file.txt

{$のファイル#1 * /}:/左と文字列:. Dir1内/ DIR2 / DIR3 /マイの削除ファイルの.txt 
$ { ファイル ## * /}:左/最後を削除し、文字列:.私のファイル.txtの
$ { ファイル#*。}:最初の文字列と左:.削除ファイルをの.txt 
$ { ファイル ## * 。}:最後の1を削除して、左。文字列:TXT 
$ { ファイル/ * }:最後の文字列/及び権利を削除:/ DIR1 / DIR2 / DIR3 
$ %%ファイル{/ *}:右/最初の文字を削除:(ヌル文字列)
$ファイル%* {。}:最後の文字列と右:. /dir1/dir2/dir3/my.file削除
$ %%ファイル*を{。}:最初の削除。右側にその文字列:/ DIR1 / DIR2 / DIR3 /私
#は、(キーボードの#$ Aの左側に)左側に除去される
(%キーボード右側%が除去されるの右$に)
単一シンボルが最小マッチングである。二つのシンボル最大一致である
$ { ファイル05 }:抽出左端5バイト:/ DIR1 
$ { ファイル55 }:最初の抽出5つの連続バイト5バイトを右:/ DIR2

文字列置換

{$のファイル / ディレクトリ /パス}:dirは最初のパスを置き換える:/パス1 / DIR2 / DIR3 /マイ。ファイル.txtファイル
$ { ファイル// ディレクトリ/パスを}:すべてのディレクトリのパスを置き換える:/パス1 /パス2 / PATH3 / my.file.txt

$ {}割り当て状態のための異なる変数(設定されていない、NULL、NULL以外の値)を使用することができます。

{$ ファイル -私を。ファイル .TXT}:$の場合、ファイルがマイを使用し、設定されていません。ファイルの戻り値として.TXT。(無処理と非NULL値NULL値)  
$ { ファイル: -私のファイル .TXT}:$の場合はファイル。またはNULL値に設定されていない、私のファイルの戻り値として.TXT。(未処置の非ヌル値)
$ { ファイル +私。ファイルの.txt} $の場合、ファイルが NULLまたは非ヌル値に設定されている、私のために使用される。ファイルの戻り値としての.txt。(処理なしで設定されていない)
$ { ファイル:+私のファイルの.txt} $は場合ファイル非ヌル値を、[マイファイル戻り値として.TXT。(何の処理時間が設定されていないと、ヌル値ではない)
$ { ファイル =私は。ファイル .TXT}:$の場合はファイル設定されていない、私を使用しています。ファイルの戻り値として.TXT、$の間、ファイル私に割り当てられているが。ファイル.TXT。(非処理および非ヌル値ヌル値)
$ { ファイル:=私。ファイルの.txt} $の場合、ファイルが。設定またはNULL値でない場合、マイファイル戻り値として.TXT、$の一方ファイル割り当て私です。ファイルの.txt。(未処置の非ヌル値)
$ { ファイルマイ?。のファイル .txtファイルを} $の場合、ファイルが。設定されていない場合、[マイファイルSTDERRに出力を.txtファイル。(無処理と非NULL値NULL値)

$ { ファイル:?。私のファイル .TXT}:$の場合はファイルを設定したり、NULL値、私のされていません。ファイルSTDERRに出力を.TXT。(未処置の非ヌル値)
$ {#} VARの可変長計算値:

$ {#ファイル取得する} 27 / DIR1 / DIR2 / DIR3 /私としては、。ファイル .txtファイルを27バイトであります

 

#/ binに/ bashの

ための ファイル  *の.C
 行う
    場合は、[$の-f ファイル ]。次いで、
        標的 = $ { ファイル%の.C}
         GCC -o $対象の$ ファイル
        エコー$対象
     Fiの
    
    場合 [-d $のファイルを ]。その後、
        エコー $のファイルは辞書れる
     fiが
行われ

結果:

exbotする@ Ubuntuの:〜/ shareWin /シェル/ 20190925 $ ./4.sh
こんにちは
世界

おすすめ

転載: www.cnblogs.com/wanghao-boke/p/11587289.html