Стандартные интерпретаторы


Дополнительные возможности

        Интерпретаторы можно запускать не только в режиме командной строки, но также и из скрипта. Также можно изменить вид приглашения (символ «%»).

         Если создать файл скрипта (этот и следующий примеры даны для интерпретатора tclsh, для wish надо заменить в строках имя tclsh на wish) с первой строкой вида

        #! /usr/local/bin/tclsh

и пометить файл скрипта, как исполняемый, то будет можно запускать интерпретатор прямо из оболочки Unix. В этом случае предполагается, что интерпретатор (tclsh, wish) был установлен в стандартный каталог usr/local/bin; если он был установлен в какое-нибудь иное место, то надо будет откорректировать путь в названной выше строке. При этом эта строка должна удовлетворять возможным требованиями операционной системы Unix на длину строк, начинающихся с #! (не более 30 символов).

        Еще удобнее будет начинать файлы со скриптами следующими тремя строками:

        #!/bin/sh
        # the next line restarts using tclsh\
        exec tclsh "$0" "$@"


        Этот второй способ имеет три преимущества перед предыдущим способом:         Эти три строчки позволяют обрабатывать скрипт и оболочке sh, и интерпретатору (tclsh или wish), но при этом exec будет запущен только оболочкой sh. Сначала скрипт обрабатывает sh, она считает вторую строку комментарием и исполняет третью строку. Утверждение с exec остановит обработку оболочкой и вместо этого запустит интерпретатор для повторной обработки всего скрипта.

        Когда интерпретатор запустится, он сочтет все три строки комментариями, потому что обратный слеш в конце второй строки означает для него, что третья строка есть продолжение комментария на второй строке.

        Изменить символ приглашения можно при помощи переменных tcl_prompt1 и tcl_prompt2. Если переменная tcl_prompt1 существует, то она должна содержать скрипт Tcl для вывода приглашения; вместо вывода своего приглашения, интерпретатор будет исполнять скрипт в tcl_prompt1. Переменная tcl_prompt2 используется аналогичным образом, когда при вводе была начата новая строка, но вводимая команда еще не была закончена. Если переменная tcl_prompt2 не была задана, то для незаконченных команд не будет выводиться никакого приглашения.
Hosted by uCoz