現在のディレクトリ内のすべての.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の左側に)左側に除去される (%キーボード右側%が除去されるの右$に) 単一シンボルが最小マッチングである。二つのシンボル最大一致である $ { ファイル:0:5 }:抽出左端5バイト:/ DIR1 $ { ファイル:5:5 }:最初の抽出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
こんにちは
世界