Ich Aufrechterhaltung einige alte Code und festgestellt, dass das folgende Stück ...Wie verhindere ich in Tcl, dass der Inhalt einer Variablen von der Shell interpretiert wird, wenn sie an exec übergeben wird?
if {[catch {exec -- echo $html_email > $file} ret]} {
puts $ret
return 0
}
... bricht aufgrund der ersten Zeichen einer HTML-E-Mail <
ist, dh
couldn't read file "html>
<title>cama_Investigate 00000560554PONY1</title>
<style type="text/css">
...
...
...
, die als E/A-Umleitungsoperator interpretiert wird. Zuvor war dies kein Problem, da wir die E-Mails mit einigen Headern, z. B. , z.
append html_email "Content-Type : text/html; charset=us-ascii\n"
append html_email "Content-Disposition: inline\n"
Ich werde alles neu zu schreiben, diese Tcl nativen Datei zu verwenden, I/O, so ist diese Frage vor allem akademisch: Was ist der richtige Weg ist von dem Inhalt einer Variable schützen von der Shell interpretiert wurde, wenn übergeben zu exec
?
Ich benutze Tcl 8.0.5 und Csh, aber ich bin interessiert an einer allgemeinen Antwort, wenn möglich.
A 'tun ... while' Schleife angebracht wäre, außer Tcl sie nicht haben nativ. Ein expliziter "Break" vereinfacht das. –