私はset -x
を使って実行されたコマンドのトレースをプリントするスクリプトを持っています。変数の展開をせずにbashでコマンドのトレースを出力する
印刷単純なコマンド、
for
コマンド、case
コマンド、select
コマンド、および算術for
コマンドとその引数または 関連する単語リストの跡それらが展開された後、それらが を実行される前に。PS4
変数の値が展開され、結果の の値がコマンドと展開された引数の前に出力されます。
この現象が発生する方法はありますか?は変数の拡張を出力しますか?ログの出力をキャプチャして集中型ロガーに送信していますが、特定の機密変数の値を出力しないようにしています。
脇に:重要な値がコマンドラインに含まれている場合、同じマシンにログインしているすべてのユーザーがそれらを見ることができます。ちょうどあなたが知っているので:) – Thomas
これらのマシンは非常にロックダウンされているので、誰かが同じホストにログインしているのは、私が守ろうとしているものではありません。代わりに、私はちょうどログにこの値が表示されないようにしたい。事実上、ログを 'grep -v'することでこれを行うことができますが、出力を完全に停止することができればそれが望ましいでしょう。 – obeattie
@obeattieそして 'grep -v'は展開と固定値の違いを知る方法がないので面倒です:' bash -xc 'a = "hello"; echo "$ a" "hello" '' – andlrc