Bash スクリプト実行可能ファイル記述子が「見つかりません」を返します。

Bash スクリプト実行可能ファイル記述子が「見つかりません」を返します。

すべてのデバッグ出力をログファイルに設定したいと思います。だから確認してみたコマンドライン - 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 

おすすめ記事