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

на главную - закладки

Жанры

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

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

Шрифт:

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

#!/bin/bash

# broken-link.sh

# Автор Lee Bigelow <[email protected]>

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

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

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

передаваться утилите 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" ]]

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

Черный дембель. Часть 5

Федин Андрей Анатольевич
5. Черный дембель
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Черный дембель. Часть 5

30 сребреников

Распопов Дмитрий Викторович
1. 30 сребреников
Фантастика:
попаданцы
альтернативная история
фэнтези
фантастика: прочее
5.00
рейтинг книги
30 сребреников

Жребий некроманта 2

Решетов Евгений Валерьевич
2. Жребий некроманта
Фантастика:
боевая фантастика
6.87
рейтинг книги
Жребий некроманта 2

Охота на разведенку

Зайцева Мария
Любовные романы:
современные любовные романы
эро литература
6.76
рейтинг книги
Охота на разведенку

Чужбина

Седой Василий
2. Дворянская кровь
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Чужбина

Возвышение Меркурия. Книга 4

Кронос Александр
4. Меркурий
Фантастика:
героическая фантастика
боевая фантастика
попаданцы
5.00
рейтинг книги
Возвышение Меркурия. Книга 4

Надуй щеки! Том 3

Вишневский Сергей Викторович
3. Чеболь за партой
Фантастика:
попаданцы
дорама
5.00
рейтинг книги
Надуй щеки! Том 3

Идеальный мир для Лекаря 16

Сапфир Олег
16. Лекарь
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 16

По воле короля

Леви Кира
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
По воле короля

Он тебя не любит(?)

Тоцка Тала
Любовные романы:
современные любовные романы
7.46
рейтинг книги
Он тебя не любит(?)

Курсант: назад в СССР 9

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

Штуцер и тесак

Дроздов Анатолий Федорович
1. Штуцер и тесак
Фантастика:
боевая фантастика
альтернативная история
8.78
рейтинг книги
Штуцер и тесак

Камень Книга седьмая

Минин Станислав
7. Камень
Фантастика:
фэнтези
боевая фантастика
6.22
рейтинг книги
Камень Книга седьмая

Хозяйка дома в «Гиблых Пределах»

Нова Юлия
Любовные романы:
любовно-фантастические романы
5.75
рейтинг книги
Хозяйка дома в «Гиблых Пределах»