Чтение онлайн

на главную

Жанры

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

Купер Мендель

Шрифт:

Пример 7-4. Проверка "битых" ссылок

#!/bin/bash

# broken-link.sh

# Автор Lee Bigelow <ligelowbee@yahoo.com>

# Используется с его разрешения.

#Сценарий поиска "битых" ссылок и их вывод в "окавыченном" виде

#таким образом они могут

передаваться утилите xargs для дальнейшей обработки :)

#например. broken-link.sh /somedir /someotherdir|xargs rm

#

#На всякий случай приведу лучший метод:

#

#find "somedir" -type l -print0|\

#xargs -r0 file|\

#grep "broken symbolic"|

#sed -e 's/^\|: *broken symbolic.*$/"/g'

#

#но это не чисто BASH-евский метод, а теперь сам сценарий.

#Внимание! будьте осторожны с файловой системой /proc и циклическими ссылками!

##############################################################

#Если скрипт не получает входных аргументов,

#то каталогом поиска является текущая директория

#В противном случае, каталог поиска задается из командной строки

####################

[ $# -eq 0 ] && directorys=`pwd` || directorys=$@

#Функция linkchk проверяет каталог поиска

#на наличие в нем ссылок на несуществующие файлы, и выводит их имена.

#Если анализируемый файл является каталогом,

#то он передается функции linkcheck рекурсивно.

##########

linkchk {

for element in $1/*; do

[ -h "$element" -a !
– e "$element" ] && echo \"$element\"

[ -d "$element" ] && linkchk $element

# Само собой, '-h' проверяет символические ссылки, '-d' -- каталоги.

done

}

#Вызов функции linkchk для каждого аргумента командной строки,

#если он является каталогом.

Иначе выводится сообщение об ошибке

#и информация о порядке пользования скриптом.

################

for directory in $directorys; do

if [ -d $directory ]

then linkchk $directory

else

echo "$directory не является каталогом"

echo "Порядок использования: $0 dir1 dir2 ..."

fi

done

exit 0

Пример 28-1, Пример 10-7, Пример 10-3, Пример 28-3 и Пример A-2 так же иллюстрируют операции проверки файлов.

7.3. Операции сравнения

сравнение целых чисел

– eq

равно

if [ "$a" -eq "$b" ]

– ne

не равно

if [ "$a" -ne "$b" ]

– gt

больше

if [ "$a" -gt "$b" ]

– ge

больше или равно

if [ "$a" -ge "$b" ]

– lt

меньше

if [ "$a" -lt "$b" ]

– le

меньше или равно

if [ "$a" -le "$b" ]

<

меньше (внутри двойных круглых скобок )

(("$a" < "$b"))

<=

меньше или равно (внутри двойных круглых скобок)

(("$a" <= "$b"))

>

больше (внутри двойных круглых скобок)

(("$a" > "$b"))

>=

больше или равно (внутри двойных круглых скобок)

(("$a" >= "$b"))

сравнение строк

=

равно

if [ "$a" = "$b" ]

==

равно

if [ "$a" == "$b" ]

Синоним оператора =.

[[ $a == z* ]] # истина, если $a начинается с символа "z" (сравнение по шаблону)

[[ $a == "z*" ]] # истина, если $a равна z*

[ $a == z* ] # имеют место подстановка имен файлов и разбиение на слова

[ "$a" == "z*" ] # истина, если $a равна z*

# Спасибо S.C.

!=

не равно

if [ "$a" != "$b" ]

Этот оператор используется при поиске по шаблону внутри [[ ... ]].

<

меньше, в смысле величины ASCII-кодов

if [[ "$a" < "$b" ]]

Поделиться:
Популярные книги

Ваше Сиятельство 3

Моури Эрли
3. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Ваше Сиятельство 3

Сумеречный стрелок

Карелин Сергей Витальевич
1. Сумеречный стрелок
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный стрелок

Ведьма и Вожак

Суббота Светлана
Фантастика:
фэнтези
7.88
рейтинг книги
Ведьма и Вожак

Темный Кластер

Кораблев Родион
Другая сторона
Фантастика:
боевая фантастика
5.00
рейтинг книги
Темный Кластер

Черный маг императора

Герда Александр
1. Черный маг императора
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Черный маг императора

Убивать чтобы жить 2

Бор Жорж
2. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 2

Не грози Дубровскому! Том VIII

Панарин Антон
8. РОС: Не грози Дубровскому!
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Не грози Дубровскому! Том VIII

Темный Патриарх Светлого Рода 6

Лисицин Евгений
6. Темный Патриарх Светлого Рода
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Темный Патриарх Светлого Рода 6

Газлайтер. Том 6

Володин Григорий
6. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 6

Обыкновенные ведьмы средней полосы

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Обыкновенные ведьмы средней полосы

Сердце Дракона. Том 11

Клеванский Кирилл Сергеевич
11. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
6.50
рейтинг книги
Сердце Дракона. Том 11

Ненастоящий герой. Том 1

N&K@
1. Ненастоящий герой
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Ненастоящий герой. Том 1

СД. Том 17

Клеванский Кирилл Сергеевич
17. Сердце дракона
Фантастика:
боевая фантастика
6.70
рейтинг книги
СД. Том 17

"Фантастика 2023-123". Компиляция. Книги 1-25

Харников Александр Петрович
Фантастика 2023. Компиляция
Фантастика:
боевая фантастика
альтернативная история
5.00
рейтинг книги
Фантастика 2023-123. Компиляция. Книги 1-25