すべてのデバッグ出力をログファイルに設定したいと思います。だから確認してみたコマンドライン - bash: ファイルに -x ログを設定する Ask Ubuntuそして指示に従ってください。
テストスクリプト:
#!/bin/bash
exec 5 >/var/log/test.log
export BASH_XTRACEFD=5
main(){
set -x
echo hello
set +x
}
main
ランニング:
./test-script
返品:
exec: 5: not found
マニュアルにはこれもできると述べていますが、なぜ上記の方法が機能しないのですか?
ベストアンサー1
5
行の間と行の間には>
スペースを入れないでくださいexec
。
スペースを使用すると、スクリプトは名前付きコマンドを実行しようとするため、5
「見つかりません」というメッセージが表示されます。
空白がない場合は、出力用に指定されたファイル名にファイル記述子5が追加されます。
また、変数をエクスポートする必要はなく、BASH_XTRACEFD
設定するだけで十分です。
#!/bin/bash
exec 5>test.log
BASH_XTRACEFD=5
main () {
set -x
echo hello
set +x
}
main