Bashは長いPS4文字列を切り取ります。

Bashは長いPS4文字列を切り取ります。

複数のbashスクリプトを呼び出す大規模なビルドプロジェクトをデバッグしようとしています。誰かが修正提案をPS4行い、スクリプトパスと実行中の行番号が出力されるように次のように設定しました。

export PS4='\e[33m+ ${BASH_SOURCE}:${LINENO} \e[0m'

ところが長くなるとBASH_SOURCE出力がすべて黄色(ので\e[33m)に出てくることを確認しました。さらなる調査により、長さが80文字を超えるたびにbashが切り捨てられ、PS4この場合は\e[0m実行されないことがわかりました。 Googleを検索しましたが、この動作に関するドキュメントが見つかりませんでした。

現在私の唯一の解決策は手動で切り取ることですBASH_SOURCE。もっと良い方法がありますか?

export PS4='\e[33m+ ${BASH_SOURCE:${#BASH_SOURCE}<80?0:-80}:${LINENO} \e[0m'

ベストアンサー1

おすすめ記事