いくつかの環境変数にいくつかの制御変数がありますが、単純なexport
コマンドの出力はこれらの文字のために乱雑です。どのように私はこの問題を解決することができ環境変数の制御文字が `export`の出力を乱す
:スクリーンショットを参照してください?
いくつかの環境変数にいくつかの制御変数がありますが、単純なexport
コマンドの出力はこれらの文字のために乱雑です。どのように私はこの問題を解決することができ環境変数の制御文字が `export`の出力を乱す
:スクリーンショットを参照してください?
なぜこの問題が発生しますか?出力をファイルに出力すると、シェルは完全に受け入れられます。何があるかを知りたい場合は、ファイルにcat -v
またはhexdump
のようなものを使用してください。
私はこれが起こることを確信できます。私はこの問題を解決する適切な方法があるかどうかわからないが、私は部分的な解決策をハッキング:
printenv -0 |
while IFS= read -r -d '' s; do
printf "declare -x %s=%q\n" "${s%%=*}" "${s#*=}"
done
これは、それが適切になることを除いて、export -p
の出力とほぼ同等である出力を生成する必要があります変数の値に含まれるすべての特殊文字をエスケープします。 1つの問題は、printenv
がexport -p
と同じ変数リストを印刷しないことです(たとえば、私のシステムでexport -p
には$OLDPWD
が含まれますが、$_
は含まれません)。私は-0
オプションをサポートしているので、printenv
しか使用しません。
例:あなたがexport myvar=$'\E[01;31mtest'
を行い、その後、私のスクリプトを実行すると、出力は次のものが含まれます:
declare -x myvar=$'\E[01;31mtest'
あなたはexport -p
は赤で印刷された線の多くを得るだろうと入力した場合(つまり、あなたの仮定のに対し、端末サポートの色)。