Основы программирования в Linux
Шрифт:
Если вам нужен легко переносимый способ удаления завершающей новой строки, для избавления от нее можно воспользоваться внешней командой
Команда eval позволяет вычислять аргументы. Она встроена в командную оболочку и обычно не представлена как отдельная команда. Лучше всего ее действие демонстрирует короткий пример, позаимствованный непосредственно из стандарта X/Open.
Будет выведено
выведет на экран 10. Таким образом,
Команда
У команды
Например, строка
в сценарии заменит текущую оболочку командой
Второй вариант применения
Эта команда открывает файловый дескриптор 3 для чтения из файла afile. Этот вариант редко используется.
Команда
При программировании сценариев в командной оболочке код завершения 0 — успешное завершение сценария, коды от 1 до 125 включительно — коды ошибок, которые можно использовать в сценариях. Оставшиеся значения зарезервированы в соответствии с табл. 2.5.
Таблица 2.5
| Код завершения | Описание |
|---|---|
| 126 | Файл не является исполняемым |
| 127 | Команда не найдена |
| 128 и выше | Появившийся сигнал |
Многим программистам на языках С и С++ использование нуля как признака успешного завершения может показаться несколько необычным. Большое преимущество сценариев — возможность применения 125 кодов ошибок, определенных пользователем, и отсутствие необходимости в глобальной переменной для хранения кода ошибки.
Далее приведен простой пример, возвращающий код успешного завершения, если в текущем каталоге существует файл с именем .profile.
Если вы любитель острых ощущений или, как минимум, лаконичных сценариев, можете переписать сценарий в виде одной строки, используя комбинацию И-списка и ИЛИ-списка, описанных ранее:
Команда
1. Первым представим сценарий export2.
2. Теперь сценарий export1. В конце сценария запускается export2.
Если вы запустите их, то получите следующий результат.
Как это работает
Сценарий export2 просто выводит значения двух переменных. В сценарии export1 задаются значения обеих переменных, но только переменная bar помечается как экспортируемая, поэтому, когда впоследствии запускается сценарий export2, значение переменной
Борьба за трон
Приключения:
исторические приключения
рейтинг книги
Почем цветочек аленький?
Женщина-цунами
Детективы:
иронические детективы
рейтинг книги
На границе империй. Том 7
7. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
рейтинг книги
Дважды одаренный. Том II
2. Дважды одаренный
Фантастика:
городское фэнтези
альтернативная история
аниме
рейтинг книги
Этот мир не выдержит меня. Том 2
2. Первый простолюдин в Академии
Фантастика:
фэнтези
попаданцы
рейтинг книги
Память льда
3. «Малазанская империя»
Фантастика:
фэнтези
рейтинг книги
Кодекс Охотника. Книга VI
6. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Звездная Кровь. Экзарх II
2. Экзарх
Старинная литература:
прочая старинная литература
рейтинг книги
Ваше Сиятельство 6
6. Ваше Сиятельство
Фантастика:
попаданцы
аниме
рейтинг книги
Кукловод
4. Династия
Фантастика:
попаданцы
аниме
рейтинг книги
Древесный маг Орловского княжества 13
13. Орловское княжество
Фантастика:
аниме
фэнтези
попаданцы
рейтинг книги
Эволюционер из трущоб. Том 10
10. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
рейтинг книги
Ты - наша
1. Наша
Любовные романы:
современные любовные романы
эро литература
рейтинг книги
Меняя маски
1. Унесенный ветром
Фантастика:
боевая фантастика
попаданцы
рейтинг книги