Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum


Lines Club

Ищем достойных соперников.

Дюкрей Анастим лосьон концентрат от выпадения волос (Ducray)


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

Библиотека сайта или "Мой Linux Documentation Project"

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


Эта статья еще не оценивалась
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют