2017-05-29 10 views
0

シェルスクリプトが初めてで、スクリプトデバッグ機能を追加するためのデバッグ機能を追加する方法を知りました。シェルスクリプト内のデバッグ機能の意味

#!/bin/bash 
function DEBUG() 
{ 
    [ "$_DEBUG" == "on" ] && [email protected] || : 
} 
for i in {1..6}; 
do 
    DEBUG echo $i 
done 
echo "Script executed" 

デバッグ機能では&& [email protected] || :がよく分かりませんが、それは何のために使用されていますか?例えばスペース

を含む引数を分割するために回避するために、@は、この文脈では、引数を機能するように拡張し

答えて

0

$、より良い構文の「$ @」:

DEBUG echo hello 

[email protected] => echo hello 

このコードは、唯一_DEBUG変数場合に実行されます

command1 && command2 command2のは、Command1をのリターン・ステータスは成功である場合にのみ実行される "上" に等しい(= 0)

command1 || command2コマンド2は、_DEBUG変数が「オン」ではないか、コマンドが返すステータス<> 0そう|| :が、それは同じことを無駄に何も:ではありませんない場合のCommand1の戻りステータスが(<> 0)

|| :を失敗した場合にのみ実行されますあたかもここにいなかったかのように。

: is a shell builtin which does nothing 
+0

"$ @このコンテキストで関数の引数に展開されます"、申し訳ありませんが、私はこれをよく理解していません。なぜこの関数でこれを行う必要がありますか? – michael

+0

これは関数が何をしているのか、なぜコメントや仕様が必要なのかを答えるためです –

+0

echo $ iはデバッグ関数のパラメータですか?もしそうなら、$ @ – michael

関連する問題