2017-05-20 3 views
0

私はdict値を別のシェルに渡したいと思っています(アプリケーションではいくつかのシェルレベルを通過します)等)の問題を引き起こします。Tclは、他のシェルに渡すために文字列を消すためにprocを引用しています

私は::base64::encode -wrapchar $dictと対応する::base64::decode $strのようなものを使うことができますが、それは期待通りに動作しますが、結果はほとんど判読できません。

しかし、そう など、私は合理的な限りオリジナルの辞書値に似ているとスペースを回避した文字セットを使用した符号化/消毒文字列を好むだろう&プレゼンテーションの理由から、引用符を、デバッグするために、私のようなものを探しています::base64マッピングprocsしかし軽い タッチ。

何か提案がありがとうございます。

答えて

1

string mapまたはregsubのいずれかを使用して、軽いタッチの見出しスキームを作成して、主な作業を行うことができます。ここで

string mapの例です:

set input "O'Donnell's Bait Shop" 
set quoted '[string map {' {'\''}} $input]'             ; #'# This comment just because of stupid Stack Overflow syntax highlighter 
puts $quoted 
# ==> 'O'\''Donnell'\''s Bait Shop' 

ここregsubの例です:

set input "This uses a hypothetical quoting of some letters" 
set quoted <[regsub -all {[pqr]} $input {«&»}]> 
puts $quoted 
# ==> <This uses a hy«p»othetical «q»uoting of some lette«r»s> 

あなたが本当に使いたい引用符の種類を決定する必要があります。もし私がいくつかのシェルを通過していたなら、私は引用符を避けることが望ましいでしょう。(そうするのは難しいからです)代わりにパイプラインや一時ファイル。ピンチでは、環境変数を使用したいと思います。シェルは、引数とほぼ同じくらい混乱しない傾向があります。

+0

ありがとうございます!私はあなたの助言に従い、バックチャネルを使用します。とても有難い! –

関連する問題