2012-02-08 10 views
42

Szukam bardzo prostego sposobu na zainstalowanie wersji TCL na komputerze z wiersza polecenia. W przypadku większości języków programowania informacje na temat tego, czego chcę, są wyświetlane pod pewnymi informacjami. To nie wydaje się być opcja dla tclsh.Uzyskaj wersję TCL z wiersza polecenia?

TCL FAQ Q.B21 sugeruje

echo 'puts $tcl_version;exit 0' | tclsh 

ale zastanawiam się, czy jest coś bardziej prosta i cross-platform? (Podejrzewam, że to nie potężnie na systemie operacyjnym Microsoft.)

-

EDIT: po prostu podkreślić, że szukam czegoś, co może być wykonywany bezpośrednio z linii poleceń systemu operacyjnego . Po uruchomieniu tclsh dostępne są różne informacje, ale staram się tego uniknąć, aby ułatwić automatyczne wykrywanie.

+5

Jeśli również poszukuje mniejszej liczbie wersji, użyj 'puts [info patchlevel]' zamiast 'stawia $ tcl_version'. Ponadto, nie musisz jawnie "wychodzić" - Tcl zobaczy koniec skryptu i zakończy działanie samodzielnie. –

+0

Dzięki Glenn. Warto to wiedzieć. –

+1

Byłoby interesujące dowiedzieć się, DLACZEGO potrzebujesz informacji. Czasem w Tcl nie potrzebujesz informacji, ponieważ STUBS może zaakceptować wszystkie ostatnie (<12 lat) stare Tcl. – schlenk

Odpowiedz

36

Może to wydawać zbyt uproszczone, ale jeśli się skrypt, który zawierał komendy:

puts $tcl_version 

A potem wybiegł Tclsh sillyscript.tcl, że wykonanie na wszystkich platformach, zakładając binarny jest w PATH . To na pewno nie jest fantazyjne lub krzykliwe, a nawet schludne, ale spełnia to wymaganie AFAIK.

====

mam ciekawy, więc spróbowałem i bez cudzysłowów:

echo puts $tcl_version;exit 0 | tclsh 

wykonuje dobrze na moim komputerze Windows ... może wykrywanie platformy przed detekcją TCL jest opcją?

+0

To może być najlepszy sposób na zrobienie tego. Zaczekam, czy pojawią się jakieś inne odpowiedzi, inaczej zaakceptuję to. Dzięki. –

+1

Różne platformy mają różne metaznaki powłoki, ale użycie skryptu pomocniczego jest najłatwiejsze. –

+1

Linuxerzy, kopiuj i wklej: echo 'umieszcza $ tcl_version; zjazd 0' | tclsh –

18

możesz to zrobić.

bash-3.2$ tclsh 
% puts $tcl_version 
8.6 
% info patchlevel 
8.6.0 

, ale najlepszym sposobem, jak myślę, jest poprzez echo.

echo 'puts [info patchlevel];exit 0' | tclsh 
echo 'puts $tcl_version;exit 0' | tclsh 

=======

dziwne, gdy próbowałem się z cytatów to nie działa dla mnie. systemem Mac OSX

+1

Jeśli nie wstawisz $ tcl_version wewnątrz pojedynczych cudzysłowów, powłoka bash spróbuje zastąpić $ tcl_version wartością ze zmiennej powłoki bash o nazwie tcl_version. Ponieważ tcl_version nie istnieje, zamiennik jest łańcuchem pustym, zamieniając "puts $ tcl_version" na "puts". Pojedyncze cudzysłowy w powłoce bash mają postać {} in tcl - zatrzymuje interpolację. – Scooter

+0

Bardzo cenna wskazówka, aby dodać wywołanie 'info patchlevel'. To robi różnicę na przykład podczas instalowania 'gcc', ponieważ tam tcl jest" konieczne do uruchomienia zestawu testowego GCC, patrz sekcja testowania dla szczegółów.Tcl 8.6 ma znaną regresję w obsłudze wzorca RE, która sprawia, że ​​części testsuite zawodzą. [ ...] Ten błąd został naprawiony w wersji 8.6.1 "Wersja 8.6 jest dostarczana z Ubuntu 14.04, ale trudno było uzyskać mniejszy numer wydania. – XavierStuvw

+0

Korekta powyższego. Terminologia dla zapisu wersji to _major.minor.patchlevel_. Więc 'info patchlevel' podaje wersję do poziomu łaty. Niepoprawnie, że trudno mi było uzyskać mniejszy numer wydania. Poziom łaty był. – XavierStuvw

3

zależności od powłoki, może to być:

tclsh <<< 'puts [info patchlevel]' 
+0

'info patchlevel' jest moim zdaniem lepszym od' tcl_version', ponieważ zapewnia bardziej kompletny tag wersji. – XavierStuvw

Powiązane problemy