Искусство программирования на языке сценариев командной оболочки




Программирование на языке сценариев командной оболочки - стр. 348


# Функция обработки мета-команд # В настоящее время недостаточно отказоустойчива (например, mount и umount # обрабатываются некорректно), но все еще актуальна. Автор Ian McDonald, изменена мной.

_my_command() { local cur func cline cspec

COMPREPLY=() cur=${COMP_WORDS[COMP_CWORD]}

if [ $COMP_CWORD = 1 ]; then COMPREPLY=( $( compgen -c $cur ) ) elif complete -p ${COMP_WORDS[1]} &>/dev/null; then cspec=$( complete -p ${COMP_WORDS[1]} ) if [ "${cspec%%-F *}" != "${cspec}" ]; then # complete -F <function> # # COMP_CWORD and COMP_WORDS() доступны на запись, # так что мы можем установить их перед тем, # как передать их дальше

# уменьшить на 1 текущий номер лексемы COMP_CWORD=$(( $COMP_CWORD - 1 )) # получить имя функции func=${cspec#*-F } func=${func%% *} # получить командную строку, исключив первую команду cline="${COMP_LINE#$1 }" # разбить на лексемы и поместить в массив COMP_WORDS=( $cline ) $func $cline elif [ "${cspec#*-[abcdefgjkvu]}" != "" ]; then # complete -[abcdefgjkvu] #func=$( echo $cspec | sed -e 's/^.*\(-[abcdefgjkvu]\).*$/\1/' ) func=$( echo $cspec | sed -e 's/^complete//' -e 's/[^ ]*$//' ) COMPREPLY=( $( eval compgen $func $cur ) ) elif [ "${cspec#*-A}" != "$cspec" ]; then # complete -A <type> func=${cspec#*-A } func=${func%% *} COMPREPLY=( $( compgen -A $func $cur ) ) fi else COMPREPLY=( $( compgen -f $cur ) ) fi }

complete -o default -F _my_command nohup exec eval trace truss strace sotruss gdb complete -o default -F _my_command command type which man nice

# Локальные переменные: # mode:shell-script # sh-shell:bash # Конец:

Приложение H. Преобразование пакетных (*.bat) файлов DOS в сценарии командной оболочки

Большое число программистов начинало изучать скриптовые языки на PC, работающих под управлением DOS. Даже на этом "калеке" удавалось создавать неплохие сценарии, хотя это и требовало значительных усилий. Иногда еще возникает потребность в переносе пекетных файлов DOS на платформу UNIX, в виде сценариев командной оболочки.


Содержание  Назад  Вперед