2016-05-19 15 views
0

Ich habe eine seltsame Situation hier. Ich muss exec auf ein Skript ausführen, getValue.itcl, aber ich bekomme keine Ausgabe, wenn ich versuche, es inline mit der Eingabeumleitung auszuführen. Tut mir leid, wenn ich die falschen Begriffe benutze.Keine Ausgabe von exec bei Verwendung von tclsh in Shell-Skript

Verwenden Sie es inline hilft mit anderen Aspekten dieses Skriptes, sonst würde ich Stücke trennen müssen. Und ich verwende tcl 8.0 (keine Option dafür). Beispiel: Das funktioniert, wenn ich ein Shell-Skript verwende, das als tclsh neu startet.

#!/bin/sh 
# 

# \ 
cd 'dirname $0' 
# Next line restarts as tclsh \ 
exec tclsh 'basename $0' $* 

proc Main { } { 
    set val [exec getValue.itcl PARAMETER] 
    puts "$val" 
} 
Main 
exit 

Aber wenn ich das in einem Skript anders ausführe, wird es nicht funktionieren.

Dies funktioniert nicht:

#!/bin/sh 
# 

tclsh << EOSCRIPT 

    set val [exec getValue.itcl PARAMETER] 
    puts "$val" 
EOSCRIPT 

exit 0 

ich keine Ausgabe erhalten werden, ich sehe nicht, was der Unterschied ist tclsh in dem ersten Verfahren zwischen der Verwendung in Bezug auf den zweiten Gegensatz, wenn es einfach darum geht, die Ausführung Ein Kommando.

Dank

Antwort

0

ich es herausgefunden, dumme Fehler.

Mit < < heißt ein hier Dokument ... heredoc?

Ich habe sie ein wenig in der Vergangenheit verwendet, aber nicht viel, ich grub ein älteres Beispiel und erkannte, dass Variablen erweitert werden, bevor sie gesendet werden. Ich muss ihnen entkommen.

Dies funktioniert:

#!/bin/sh 
# 

tclsh << EOSCRIPT 

    set val [exec getValue.itcl PARAMETER] 
    puts "\$val" 
EOSCRIPT 

exit 0