Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Next Previous Contents

10. Разное

10.1 Чтение пользовательского ввода с помощью read

В некоторых случаях вы, возможно, захотите попросить пользователя что-нибудь ввести. Есть разные способы сделать это. Вот один из способов:

                #!/bin/bash
                echo Введите, пожалуйста, Ваше имя
                read NAME
                echo "Привет, $NAME!"
        

Как вариант, Вы можете получать сразу несколько значений с помощью read, данный пример объясняет это:

          #!/bin/bash
          echo "Введите, пожалуйста, Ваши имя и фамилию"
          read FN LN   #FN - First Name - имя; LN - Last Name - фамилия
          echo "Hi! $LN, $FN !"
        

10.2 Арифметические вычисления

В командной строке (или оболочке) попробуйте ввести следующее:

echo 1 + 1

Если Вы рассчитываете увидеть '2', то будете разочарованы. Что делать, если Вы хотите, чтобы BASH произвёл вычисления над Вашими числами? Вот решение:

echo $((1+1))

В результате этого будет более "логичный" вывод. Такая запись используется для вычисления арифметических выражений. Вы также можете сделать это следующим образом:

echo $[1+1]

Если Вам нужно использовать дроби или более сложную математику, или Вы просто это хотите, можете использовать bc для вычисления арифметических выражений.

Когда автор запустил "echo $[3/4]" в командной оболочке, она вернула значение 0, т.к. bash, когда отвечает, использует только целые значения. Если Вы запустите "echo 3/4|bc -l", оболочка вернёт правильное значение 0.75.

10.3 Ищем bash

Из сообщения от mike (см. Благодарности):

Вы всегда используете #!/bin/bash .. Вы могли бы привести пример, как найти, где расположен bash.

Предпочтительно использовать 'locate bash', но не на всех машинах есть locate.

'find ./ -name bash' из корневого каталога обычно срабатывает.

Можно проверить следующие расположения:

ls -l /bin/bash

ls -l /sbin/bash

ls -l /usr/local/bin/bash

ls -l /usr/bin/bash

ls -l /usr/sbin/bash

ls -l /usr/local/sbin/bash

(сходу не могу придумать никакой другой каталог... Я находил bash в большинстве этих мест на различных системах).

Вы также можете попробовать 'which bash'.

10.4 Получение возвратного значения программы

В bash возвратное значение программы сохраняется в специальной переменной $?.

Данный пример иллюстрирует, как перехватить возвратное значение программы; я предположил, что каталога dada не существует (это также предложил mike).

        #!/bin/bash
        cd /dada &> /dev/null
        echo rv: $?
        cd $(pwd) &> /dev/null
        echo rv: $?
        

10.5 Перехват вывода команды

Этот маленький скрипт показывает все таблицы из всех баз данных (предполагается, что у вас установлен MySQL). Также, подумайте о том, как поправить команду 'mysql' для использования подходящего имени пользователя и пароля.

        #!/bin/bash
        DBS=`mysql -uroot  -e"show databases"`
        for b in $DBS ;
        do
                mysql -uroot -e"show tables from $b"
        done
        

10.6 Несколько исходных файлов

Вы можете запускать несколько файлов файлы с помощью команды source.

__TO-DO__


Next Previous Contents