「set -x」を使用してコメントを追加する

「set -x」を使用してコメントを追加する

時には追加するのは本当に便利です。

set -x

実行前にすべてのコマンドを表示するには、スクリプトの上部に移動します。

良い出力を持つスクリプトを作成するには、1つの欠点があります。このように、スクリプトにテキスト出力を追加する方法がわかりません。私が使うなら

echo 'some comment'

これにより印刷が倍増します。

+ echo 'some comment'
some comment

試してみると#全く出ません。

のように印刷されるコメントを追加するにはecho?を使用するとどうなりますかset -x

答え1

賢いアプローチは、コメントをno-opコマンドの引数として記述することです。特に役に立つかもしれないものは次のとおりです。:空のユーティリティ:

set -x
: Some interesting notes on the following are ...

結果:

+ : Some interesting notes on the following are...

コロンコマンドは、何も実行せず、ユーザーが提供するすべての引数を受け入れ、常に成功します。:トレース出力の開始時に追加情報を取得できますが、これはおそらくユーザーの目的にとって大きな問題ではありません。

これが気に入らない場合、:より悪い方法は偽のコマンドを使用することです。

set -x
seq 1 1
Some comment &>/dev/null
true

以下を出力します。

+ seq 1 1
1
+ Some comment
+ true

つまり、Some commentシェルがラインを実行しようとすると、ラインはトレース出力として印刷されますが、結果のエラーメッセージはに送信されます/dev/null。これはいくつかの明白な理由で迷惑なことですが。エラーset -e


どちらの場合も、あなたのコメントは通常の方法でシェルによって解析されるため、特に特殊文字がある場合はそれを引用する必要があり、トレース出力なので引用符が表示されます。

答え2

デバッグ情報を印刷するには、「set -x」を使用せずに、別のデバッグ機能を使用してください。

#!/bin/bash

DEBUG=1

debug() {
    if [ $DEBUG == 1 ]
    then
    echo "DEBUG:" $@
    fi
}

debug "foo bar"

スクリプトを実行すると、次のものが生成されます。

temeraire:ul jenny$ ./testdebug.sh 
DEBUG: foo bar

割り当てをreadに変更すると、そのDEBUG=0行は印刷されません。

答え3

スクリプトのデバッグに使用しましたが、set -x解決策のみが見つかりました。@MichaelHomerが提案しました。それは利点を取る空のユーティリティ(別名。: ..some comment...)。

より効率的なソリューションに移行する準備ができたら、実際のロガーを使用してスクリプトを実装することをお勧めします。log4Bash

はい

#!/usr/bin/env bash
source log4bash.sh

log "This is regular log message... log and log_info do the same thing";

log_warning "Luke ... you turned off your targeting computer";
log_info "I have you now!";
log_success "You're all clear kid, now let's blow this thing and go home.";
log_error "One thing's for sure, we're all gonna be a lot thinner.";

# If you have figlet installed -- you'll see some big letters on the screen!
log_captains "What was in the captain's toilet?";

# If you have the "say" command (e.g. on a Mac)
log_speak "Resistance is futile";

結果:

   SS#1

答え4

:何も行わないnullコマンドを使用できます。

: ::::::: your comment here

注:コメントにbash特殊文字を使用しないでください。それ以外の場合は(, $, !, [, ...まだ解釈されます。

読みやすくするには、+settingsを使用して希望の文字列に変更できますPS4。たとえば、次のようになります。

PS4=": "; set -x

関連情報