2016-09-20 10 views
0

いくつかの環境変数にいくつかの制御変数がありますが、単純なexportコマンドの出力はこれらの文字のために乱雑です。どのように私はこの問題を解決することができ環境変数の制御文字が `export`の出力を乱す

messy export command output

:スクリーンショットを参照してください?

答えて

1

なぜこの問題が発生しますか?出力をファイルに出力すると、シェルは完全に受け入れられます。何があるかを知りたい場合は、ファイルにcat -vまたはhexdumpのようなものを使用してください。

1

私はこれが起こることを確信できます。私はこの問題を解決する適切な方法があるかどうかわからないが、私は部分的な解決策をハッキング:

printenv -0 | 
    while IFS= read -r -d '' s; do 
     printf "declare -x %s=%q\n" "${s%%=*}" "${s#*=}" 
    done 

これは、それが適切になることを除いて、export -pの出力とほぼ同等である出力を生成する必要があります変数の値に含まれるすべての特殊文字をエスケープします。 1つの問題は、printenvexport -pと同じ変数リストを印刷しないことです(たとえば、私のシステムでexport -pには$OLDPWDが含まれますが、$_は含まれません)。私は-0オプションをサポートしているので、printenvしか使用しません。

:あなたがexport myvar=$'\E[01;31mtest'を行い、その後、私のスクリプトを実行すると、出力は次のものが含まれます:

declare -x myvar=$'\E[01;31mtest' 

あなたはexport -pは赤で印刷された線の多くを得るだろうと入力した場合(つまり、あなたの仮定のに対し、端末サポートの色)。