#==> то вывод от нее может отличаться от используемого здесь ('nothing appropriate')
if [[ -z "$command_test" ]] # Проверка наличия утилиты в системе.
then
$CMD option1 option2 # Запуск команды с параметрами.
else # Иначе,
$PlanB #+ запустить command2 (запасной вариант).
fi
Команда run-parts удобна для запуска нескольких сценариев, особенно в комбинации с cron или at.
Было бы неплохо снабдить сценарий графическим интерфейстом X-Window. Для этого можно порекомендовать пакеты
Для постороения приложений с графическим интерфейсом, можно попробовать
33.8. Проблемы безопасности
Уместным будет лишний раз предупредить о соблюдении мер предосторожности при работе с незнакомыми сценариями. Сценарий может содержать
Исследователи из Bell Labs и других организаций, включая M. Douglas McIlroy, Tom Duff, и Fred Cohen исследовали вопрос о возможности создания вирусов на языке сценариев командной оболочки, и пришли к выводу, что это делается очень легко и доступно даже для новичков.[ 63 ]
Это еще одна из причин, по которым следует изучать язык командной оболочки. Способность читать и понимать сценарии поможет вам предотвратить возможность взлома и/или разрушения вашей системы.
33.9. Проблемы переносимости
Эта книга делает упор на создании сценариев для командной оболочки Bash, для операционной системы GNU/Linux. Тем не менее, многие рекомендации, приводимые здесь, могут быть вполне применимы и для других командных оболочек, таких как sh и ksh.
Многие версии командных оболочек стремятся следовать стандарту POSIX 1003.2. Вызывая Bash с ключом --posix, или вставляя set -o posix в начало сценария, вы можете заставить Bash очень близко следовать этому стандарту. Но, даже без этого ключа, большинство сценариев, написанных для Bash, будут работать под управлением ksh, и наоборот, т.к. Chet Ramey перенес многие особенности, присущие ksh, в последние версии Bash.
В коммерческих версиях UNIX, сценарии, использующие GNU-версии стандартных утилит и команд, могут оказаться неработоспособными. Однако, с течением времени, таких проблем остается все меньше и меньше, поскольку утилиты GNU, в большинстве своем, заместили свои проприетарные аналоги в UNIX. После того, как Caldera дала разрешение на публикацию исходного кода некоторых версий оригинальных утилит UNIX, этот процесс значительно ускорился.
Bash имеет некоторые особенности, недоступные в традиционном Bourne shell. Среди них:
Некоторые дополнительные ключи вызова
Подстановка команд, с использованием нотации $( )
Некоторые операции над строками
Подстановка процессов
встроенные команды Bash
Более подробный список характерных особенностей Bash, вы найдете в Bash F.A.Q..
33.10. Сценарии командной оболочки под Windows
Даже те пользователи, которые работают в
Глава 34. Bash, версия 2
Текущая версия
bash$ echo $BASH_VERSION
2.05.8(1)-release
В этой версии классического языка сценариев Bash были добавлены переменные-массивы[ 64 ], расширение строк и подстановка параметров, улучшен метод косвенных ссылок на переменные.
Пример 34-1. Расширение строк
#!/bin/bash
# "Расширение" строк (String expansion).
# Введено в Bash, начиная с версии 2.
# Строки вида $'xxx'
# могут содержать дополнительные экранированные символы.
echo $'Звонок звенит 3 раза \a \a \a'
echo $'Три перевода формата \f \f \f'
echo $'10 новых строк \n\n\n\n\n\n\n\n\n\n'
exit 0
Пример 34-2. Косвенные ссылки на переменные -- новый метод
#!/bin/bash