Цикл for в sh
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Цикл for в sh - 2009-04-02 12:57:03.400000
|
|
|
SoldierASP
Сообщений: 17
Оценки: 0
Присоединился: 2008-08-13 10:38:37.486666
|
Доброго всем времени суток. Хотел написать скрипт (не важно его содержимое) для sh (FreeBSD). Что я не пробовал - не получается его заставить работать правильно. Мне необходим цикл с инкрементом, т.е. как в с++: for(i=0;i<10;i++) на шеле делал подобное - не работает. Пробовал в while - тоже не помогло. Объясните как правильно написать цикл для shell? Если есть примеры, то поделитесь. Заранее благодарен.
|
|
|
RE: Цикл for в sh - 2009-04-02 16:37:05.673333
|
|
|
tеstеr
Сообщений: 377
Оценки: -46
Присоединился: 2008-02-08 17:56:40.563333
|
Вот пример скрипта, который копирует все текстовые файлы в резервные копии. ls *.txt > listTxtFiles for i in 'cat listTxtFiles'; do cp "$i" "$i".bak ; done общий формат команды такой: for NAME [in LIST ]; do COMMANDS; done for <переменная> [ in <набор> ] do <список> done Если часть in <набор> опущена, то это означает in "$@" ( то есть in $1 $2 … $n). Пример. Вывести на экран все файлы с расгирением sh из текущей папки: for f in *.for do cat $f done Интерпретатор командного языка shell
|
|
|
RE: Цикл for в sh - 2009-04-02 18:00:31
|
|
|
SoldierASP
Сообщений: 17
Оценки: 0
Присоединился: 2008-08-13 10:38:37.486666
|
А если мне надо не файлы перебирать а числа. Ниже приведу пример:
#./cat for
#!/bin/sh
for (( c=0; $c<5; c=$c+1 ));
do
echo $c
done
не хочет работать. Пишет вот что: # ./for
./for: 3: Syntax error: Bad for loop variable
у мнегох это в sh работает у меня не хочет. Я понимаю, что если мне указать числа от 1 до 5, то это еще нормально. а что если мне надо будет указать числа от 1 до 255? целых 3 ряда занять? :) При попытке выполнить: for c in $1 $2 ... $5
do
echo $c
done
получил не менее забавный вывод: # ./for
...
|
|
|
RE: Цикл for в sh - 2009-04-02 18:41:53.326666
|
|
|
tеstеr
Сообщений: 377
Оценки: -46
Присоединился: 2008-02-08 17:56:40.563333
|
Команда expr + цикл while получится так (наверно): c = 255 while 'expr $c > 0' do echo $c c = 'expr $c - 1' done
|
|
|
RE: Цикл for в sh - 2009-04-02 19:26:39.186666
|
|
|
SoldierASP
Сообщений: 17
Оценки: 0
Присоединился: 2008-08-13 10:38:37.486666
|
Набрал: # cat catfile
c = 10
while 'expr $c > 0'
do
echo $c
c = 'expr $c - 1'
done
выполнил и получил ответ: c: not found
expr $c > 0: not found теперь я вообще ничего не понял
|
|
|
RE: Цикл for в sh - 2009-04-02 19:45:19.666666
|
|
|
tеstеr
Сообщений: 377
Оценки: -46
Присоединился: 2008-02-08 17:56:40.563333
|
#!/bin/sh c=255 while expr $c > 0 do echo $c c=$(($c - 1)) done =============== #!/bin/sh n=0 while test $n -le 255 do echo $n n=$(($n + 1)) done
|
|
|
RE: Цикл for в sh - 2009-04-02 20:41:23.483333
|
|
|
SoldierASP
Сообщений: 17
Оценки: 0
Присоединился: 2008-08-13 10:38:37.486666
|
Выполнил. Вот результат: : 22: Syntax error: "(" unexpected (expecting ")")
|
|
|
RE: Цикл for в sh - 2009-04-03 10:50:37.193333
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
for ((i=0; i<10; i++)); do echo $i; done
|
|
|
|
|