#!/bin/bash -x
echo This is a script that has debugging turned on
スクリプト出力
+ echo This is a script that has debugging turned on
This is a script that has debugging turned on
+を削除または交換して削除したいです。私はsedが私の問題(sed 's/^\++//g'
)を解決すると予想しましたが、このアプローチはデバッグ出力ラインには影響しません。
もっと実験した後に発見しました。デバッグ出力がstderrに記録されているように見えます。(これを命令で推論した./test.sh 2>/dev/null
後、デバッグラインを除いて出力する)
この新しい情報でこれがうまくいくことを願っています。
./test.sh 2>&1 | sed 's/^\++//g'
しかし、残念ながら、まだ望ましくない同じ結果が表示されます。
+ echo This is a script that has debugging turned on
This is a script that has debugging turned on
ベストアンサー1
これがヒント+
です。PS4
空の文字列に設定します。
#!/bin/bash
PS4=''
set -x
echo 'This is a script that has debugging turned on'
テスト:
$ bash script.sh
echo 'This is a script that has debugging turned on'
This is a script that has debugging turned on
または、元のスクリプトの場合は、PS4
スクリプトを呼び出すときに空の文字列に設定します。
$ PS4='' ./script.sh
echo This is a script that has debugging turned on
This is a script that has debugging turned on
タイムスタンプを挿入するために使用できます。
$ PS4='$(date +"%T: ")' ./script.sh
21:08:19: echo 'This is a script that has debugging turned on'
This is a script that has debugging turned on
21:08:19: echo 'Now sleeping for 2 seconds'
Now sleeping for 2 seconds
21:08:19: sleep 2
21:08:21: echo Done
Done