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

Пример 9-11. Преобразование графических файлов из одного формата в другой, с изменением имени файла

Пример 9-11. Преобразование графических файлов из одного формата в другой, с изменением имени файла

#!/bin/bash

# cvt.sh:

# Преобразование всех файлов в заданном каталоге,

#+ из графического формата MacPaint, в формат "pbm".

# Используется утилита "macptopbm", входящая в состав пакета "netpbm",

#+ который сопровождается Brian Henderson ([email protected]).

# Netpbm -- стандартный пакет для большинства дистрибутивов Linux.

OPERATION=macptopbm

SUFFIX=pbm # Новое расширение файла.

if [ -n "$1" ]

then

directory=$1 # Если каталог задан в командной строке при вызове сценария

else

directory=$PWD # Иначе просматривается текущий каталог.

fi

# Все файлы в каталоге, имеющие расширение ".mac", считаются файлами

#+ формата MacPaint.

for file in $directory/* # Подстановка имен файлов.

do

filename=${file%.*c} # Удалить расширение ".mac" из имени файла

#+ ( с шаблоном '.*c' совпадают все подстроки

#+ начинающиеся с '.' и заканчивающиеся 'c',

$OPERATION $file > "$filename.$SUFFIX"

# Преобразование с перенаправлением в файл с новым именем

rm -f $file # Удаление оригинального файла после преобразования.

echo "$filename.$SUFFIX" # Вывод на stdout.

done

exit 0

# Упражнение:

# --------

# Сейчас этот сценарий конвертирует *все* файлы в каталоге

# Измените его так, чтобы он конвертировал *только* те файлы,

#+ которые имеют расширение ".mac".

Замена подстроки

${string/substring/replacement}

Замещает первое вхождение $substring строкой $replacement.

${string//substring/replacement}

Замещает все вхождения $substring строкой $replacement.

stringZ=abcABC123ABCabc

echo ${stringZ/abc/xyz} # xyzABC123ABCabc

# Замена первой подстроки 'abc' строкой 'xyz'.

echo ${stringZ//abc/xyz} # xyzABC123ABCxyz

# Замена всех подстрок 'abc' строкой 'xyz'.

${string/#substring/replacement}

Подстановка строки $replacement вместо $substring. Поиск ведется с начала строки $string.

${string/%substring/replacement}

Подстановка строки $replacement вместо $substring. Поиск ведется с конца строки $string.

stringZ=abcABC123ABCabc

echo ${stringZ/#abc/XYZ} # XYZABC123ABCabc

# Поиск ведется с начала строки

echo ${stringZ/%abc/XYZ} # abcABC123ABCXYZ

# Поиск ведется с конца строки

Оглавление книги


Генерация: 0.077. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз