LinuxForum.Fans
Тема

Подскажите новичку - скрипт для оболочки BASH

Автор: vl72 4 сообщений 2232 просмотров
#136477

1) Подскажите, пожалуйста, как обрабатывать файлы в скрипте BASH, если имена этих файлов состоят из нескольких слов и содержат в себе пробелы. Файлов может и не быть в указанном месте.
Например, файл(ы) называе(ю)тся
Скрипт для создания директории на диске.sh,
Скрипт для создания файлов на диске.sh
и. т.п.
При выполнении скрипта

text

#!/bin/bash
cd $HOME
zraz=' Скрипт для создания*.sh'

if [ `ls $zraz | wc -l` -gt 0 ] then echo 'УРЯЯЯ' else echo 'НЕЕЕЕЕЕТ' fi

появляется ругань когда нет файлов «Скрипт для создания*.sh»
ls: cannot access Скрипт\: No such file or directory
ls: cannot access для\: No such file or directory
ls: cannot access создания*.sh: No such file or directory


2) Какой командой (find, locate, ls), лучше производить поиск и вывод файлов для дальнейшей обработки в скрипте, чтобы можно с помощью переменных или других команд указать место поиска, образец для поиска и другие параметры?
Например, если известно, что файлы должны находиться в определенной директории и имеют что-то общее в имени или содержимом.
Если есть где-то примеры, пожалуйста, подскажите.

3) Какой командой можно узнать позицию искомого символа (подстроки) в строке с начала или с конца строки, а также длину строки (кол-во символов)?

4) Как можно создать командой mkdir папку, которая содержит пробелы в имени (состоит из нескольких слов) ?
Команда
d='fi\ se'; mkdir $d
создает 2 папки.
Как, вообще, можно обрабатывать папки имена которых состоят из нескольких слов (разделены пробелами)? Например, папки типа «папка с картинками_files», которые создает веб-броузер для веб-страниц на диске.

5) Какая команда позволяет дописывать (добавлять) в новую строку текстового файла данные в скрипте? Например есть цикл, проходит 10 итераций и в один и тот же текстовый файл дописывается в новую строку значение строчной переменной, т.е. будет всего 10 строк.

#136483

1) используй кавычки, а лучше экранируй все недоспецсимволы
2) если куча входных параметров, то find
3) длина строки вычисляется ${#variable}
работа со строками в bash
http://www.opennet.ru/tips/info/866.shtml
4) кавычки или экранирование
5) >>

#136523
vl72 написал:
Например, папки типа «папка с картинками_files», которые создает веб-броузер для веб-страниц на диске.

например вы сами используете кавычки, что-бы было понятно нам. с шеллом та-же беда.
4) у вас ошибка - обратный слеш НЕ работает внутри одиночных кавычек. либо пишите d='fi se'; mkdir "$d" либо d=fi\ se; mkdir "$d"

vl72 написал:
5) Какая команда позволяет дописывать (добавлять) в новую строку текстового файла данные в скрипте? Например есть цикл, проходит 10 итераций и в один и тот же текстовый файл дописывается в новую строку значение строчной переменной, т.е. будет всего 10 строк.

либо перенаправление (уже сказали), но можно и так:
[console]command | tee --append log_file[/console]

#136527
3axapp написал:
1) используй кавычки, а лучше экранируй все недоспецсимволы

ИМХО, лучше таки использовать кавычки.

vl72 написал:
2) Какой командой (find, locate, ls), лучше производить поиск и вывод файлов для дальнейшей обработки в скрипте, чтобы можно с помощью переменных или других команд указать место поиска, образец для поиска и другие параметры?
Например, если известно, что файлы должны находиться в определенной директории и имеют что-то общее в имени или содержимом.
Если есть где-то примеры, пожалуйста, подскажите.

1) ls умеет сортировать любым способом. В этом её сила.
2) find позволяет задавать разные условия для поиска, и выполнять команды над результатом. сортировать не умеет.
3) locate ищет не в файлах, а в базе данных, которая утром обновляется

Войдите или зарегистрируйтесь, чтобы ответить.