Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 04.04.2013
Сообщений: 7
1

Что делает программа rev?

26.10.2013, 22:34. Показов 2872. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задали написать комменты по скрипту. Меня интересует, что делают последние 4 строчки скрипта (начинающиеся с for). Пожалуйста, объясните.

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/bin/bash
# Написать подробные комментарии
# echo   "Кису любишь!"
 
rm -r test          # удаляем папку test если она была до этого (а скорее всего была)
 
KISA=Киса           # Присваиваем переменной KISA значение "Киса" 
 
echo $KISA          # Выводим на печать значение KISA
 
echo $RANDOM            # Выводим значение функции $RANDOM, т.е. случайное число
 
mkdir test          # Создаём директорию test, если она ещё не создана
cd  test            # Перемещаемся в эту директорию test
 
n=0             # Присваиваем n=0; n будет считать количество созданных поддиректорий второго уровня
                
for ((i = 1; i <= $1; i++)) 
do              # Начинаем цикл, присваиваем счётчику значение 1, максимальное значение было введено при запуске скрипта
   mkdir level1.$i      # В директории test создаём директорию вида level1.i; Например, level1.1, level 1.2 и т.д.
    for ((j = 1; j <= $2; j++))
    do          # Начинаем цикл в цикле, счётчик от 1 до второго значения, переданного при запуске скрипта 
         mkdir level1.$i/level2.$j  
                # В level1.i создаём папку level2.j, например, level1.2/level2.1; level1.3/level2.3
        n=$((n+1))  # n++
                    
        touch level1.$i/level2.$j/TextFile$n
                # В каждой поддиректории второго уровня создаём по одному текстовому файлу, в название которого вводится и номер файла
        echo "This is file $n" > level1.$i/level2.$j/TextFile$n 
                # В каждый файл пишется (НА САМОМ ДЕЛЕ НЕТ - ибо см. дальше) фраза "This is file n", где вместо n ставится реальный номер 
        echo $n     # Печатаем номер на экран
    done
done
 
for f in `find . -type f`
do
  rev $f > $f           # 
done
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.10.2013, 22:34
Ответы с готовыми решениями:

Gawk, что делает RS?
$ cat $ch21/data2.txt; Riley Mullen 123 Main Street Chicago, IL 60601 (312)555-1234 Frank...

Что делает команда
Новичок в баше. В скрипте попалась команда echo $* | sed 's/ /\n/g' | while read arg; Что она...

Что делает клавиша [TAB] в терминале?
Можете объяснить на примере? Насколько я вижу, она выводит список всех возможных консольных...

Дать понять пользователю, что программа что-то делает, а не зависла
Написал программу для поиска текста в файлах, но т.к. файлов много программа &quot;зависает&quot; на время...

4
Модератор
Эксперт NIX
8424 / 3248 / 105
Регистрация: 24.05.2011
Сообщений: 14,447
Записей в блоге: 8
26.10.2013, 22:51 2
Начиная с for переменной f присваивается значение найденных в этой и ниже директориях простых файлов.
Далее утилита rev копирует указанные файлы на стандартный вывод, изменяя порядок символов в каждой строке. Если файлы не указаны (не найдены утилитой find, что выше, в этом цикле), читается стандартный ввод.
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
26.10.2013, 23:10 3
Цитата Сообщение от NeoMatrix Посмотреть сообщение
Если файлы не указаны (не найдены утилитой find, что выше, в этом цикле), читается стандартный ввод.
если файлы не найдены, тело цикла не выполняется
1
0 / 0 / 0
Регистрация: 04.04.2013
Сообщений: 7
26.10.2013, 23:22  [ТС] 4
Немного не понял один момент. В скрипте есть строчка:
Bash
1
echo "This is file $n" > level1.$i/level2.$j/TextFile$n
которая, как я понимаю, должна писать в каждый созданный текстовый файл фразу с тем, какой это по счёту файл.

С последними 4-мя строками (о которых с самого начала шла речь) эта штука не работает, без них - работает. Объясните, пожалуйста, подробнее, почему так происходит?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
26.10.2013, 23:42 5
Цитата Сообщение от Edmonton Посмотреть сообщение
С последними 4-мя строками (о которых с самого начала шла речь) эта штука не работает
это из-за вывода в сам файл, нужно делать через промежуточный файл
Bash
1
rev file > file_; mv -f file_ file
Bash
1
rev "$f" > "${f}_" && mv -f "${f}_" "$f"
1
26.10.2013, 23:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.10.2013, 23:42
Помогаю со студенческими работами здесь

Что делает программа
int main() { float *q, **b; int i, j, k, n, m; scanf(&quot;%d %d&quot;,&amp;n,&amp;m); ...

Что делает программа?
не могу понять что делает программа? #include &lt;iostream&gt; using namespace std; bool...

Что делает программа?
Program Ex_4; Type LinMass = Array Of Integer; Var I, N : Byte; K : Integer; A : LinMass; Begin...

Что делает программа
Объясните пожалуйста пошагово что делает эта программа #include &lt;stdio.h&gt; #include &lt;fstream&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru