motofan logo
7 страниц V < 1 2 3 4 > »         
> 

Написание скриптов #!/bin/sh for UNIX, Кто поможет?

VINRARUS
сообщение 17.6.2011, 17:56 Закрепленное сообщение!


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



Ура! В теме появилася шапочка. watsup.gif
В даной теме помогаем друг другу в написании шелл скриптов, и дружно решаем проблемы связанные с ними smile.gif

Вот мои рукописные мануалы для совсем новичков:
Основы. Синтаксис, кавычки, переменные, условные операторы
Розширенная инфа о if

Подробный мануал с примерами по ВСЕМ функциям SH
Портативная версия еще одного мануала
Книги в формате Djvu

Примеры работы с текстом через sed и мануал PRO и мануал NUB
Примеры работы с текстом через awk и мануал
Обрезка текста внутри переменных - чорт ногу сломит =] О логике шаблонов.

Где быстро найти инфу?
Тут вводите в строчку поиска манов любую утилиту, например echo, и 95% вероятности что получите инфу по всем функциям и ключам
Вот инфа по НЕКОТОРЫМ утилитам, также можна пользоваться поиском

ПС

1. Не во всех UNIX\LINUX системах можно сразу в терминале вводить команды утилит.
Например в MOTOMAGX часто перед командой утилиты нужно вводить "busybox" (например busybox free) хотя это и решено на некоторых модах.
А в некоторых выкидышах типа Android они и вовсе отсутствуют как и сам busybox, но есть возможность добавить его самому.

2. Не всегда утилиты поддерживают то что написано в манах к ним, иногда функционал меняется от версии к версии.

3. Также нужно знать что код от bash иногда может не работать корректно на shell (sh), хотя и очень редко.
Это из за того что древним программистам делать было нечего, когда не было еще интернета, и они понапридумывали кучу модификаций.
Хорошо хоть код под чистый shell подойдет ко всем им, из за чего он считается эталоном. smile.gif
А не bash как считают юные линуксойды.
[close]


Сообщение отредактировал VINRARUS - 12.12.2020, 21:32
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 13.7.2011, 13:17


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



а не на php парсеры есть ?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Pyth_ON!
сообщение 13.7.2011, 16:08


MOTOMAGXX0r
****

Группа: Пользователи
Сообщений: 166
Регистрация: 29.4.2009
Пользователь №: 198 680
Модель телефона: ROKR EM30/PEARL VE66
Прошивка: R6716_G_71.01.02R_B

Рейтинг: 48



Цитата(Osta @ 13.7.2011, 13:17) *

а не на php парсеры есть ?

Могу собрать минимальный бинарик php... smile.gif
А так можно переписать с использованием sed и grep...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 13.7.2011, 16:55


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



Цитата(Pyth_ON! @ Сегодня, 19:08)
* можно переписать с использованием sed и grep

и кто бы показал Так Было - Так Стало )? интересует случайная цитата башорга
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 18.7.2011, 11:06


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



Вот нашол способ быстрее считывать параметры с конфигов! Правда поздновато я ето надумал, но в сеже может комуто пригодиться. wink.gif
Так ето делалося:
Код
ET=`sed -n -e '/^swapT = /p' $CFGPATH | awk '{print $3}'`

А вот мой вариант:
Код
ET=`sed -e '/^swapT = /!d' -e 's/^swapT = //' $CFGPATH`


Вот напишу принцып работы для тех кому ето интересно. smile.gif Преимущества 2го варианта в скорости выполнения. Путем отсутствия конвеера (конвеер-ето строчка с набором разных команд которые выполняються по очереди и раздиляються отакой палкой "|"). И если раньше одна програма искала строчку с параметром, а вторая удаляла название параметра, то щас только одна програма ето делает, по етому затраченое время на нее меньше.
Ну канечно если скрипт читает 1-2 параметра, то прироста от скорости не густо, но если их например 20 шт, то и разница будет гдето секунд 5-7.
Например так можно ускорить загрузку всего мода минимум на 5 сек.

Сообщение отредактировал VINRARUS - 4.11.2017, 19:24
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
igoripp
сообщение 19.7.2011, 16:48


Самый дерзкий
******

Группа: Пользователи
Сообщений: 1 412
Регистрация: 27.3.2010
Из: Касимов, Муром
Пользователь №: 215 540
Модель телефона: sony ion
Прошивка: Разные

Рейтинг: 1336



Знающие люди, подскажите. sh поддерживается всеми системами UNIX. Если применять bash, то он 100 процентов подойдет для использования на телефоне е8? Файл bash у нас есть по адресу /bin/bash, но слышал что bash постоянно обновляется, И отсюда этот вопрос. Или считаете, что лучше не выпендриваться и знать sh?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 19.7.2011, 18:29


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



Я за sh, так как он поддерживаеться гарантировано везде где наследил линукс.
Ну и он проще и понятнее за bash.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 26.7.2011, 12:34


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



Код
Name=`date +%H:%M@%d%a-`


как правильно прописать, чтобы вместо @ был пробел ?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 26.7.2011, 14:23


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



Разделив 1 команду на 2:
Код
Name="`date +%H:%M` `date +%d%a-`"

или взяв в лапки:
Код
Name=`date '+%H:%M %d%a-'`


Сообщение отредактировал VINRARUS - 4.11.2017, 19:30
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 26.7.2011, 16:05


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



VINRARUS, спасибо, работает !

А можно это переложить на sh ?

Spoiler:


_http://bash.org.ru/random - по этой ссылке уже выдаются случайные цитаты, что для нас очень удобно! Пишем такой код:

Код
$borgs=file_get_contents( "http://bash.org.ru/random" );
preg_match( '/<div>(.*?)<\/div>/is', $borgs, $borg );
$simchm2 = array("<br />", "<br>");
$borg=str_replace($simchm2,"\n", $borg);
$borg=htmlspecialchars_decode ($borg[1]);
echo($borg);


Это рабочий код -, мы украли цитату smile.gif Теперь давайте разбирать всё по очереди wink.gif "$borgs=file_get_contents( "http://bash.org.ru/random" );" - мы выкачиваем исходный код страницы и записываем его в переменную. После этого мы режем первый попавшийся код на этой странице, который находится в скобках заданных нами "preg_match( '/<div>(.*?)<\/div>/is', $borgs, $borg );"
"$simchm2 = array("<br />", "<br>");" - здесь мы делаем массив, где режем html-теги (массив для того, чтобы не писать одну и ту же строку много раз...)
Далее нам нужно заменить html-теги на нужный нам формат (который работает в аське/блокноте и т. д.) "$borg=str_replace($simchm2,"\n", $borg);" - этой строкой мы и заменяем... После чего заменяем html-пробелы, двоеточия и т. д. на нормальный человеческий вид (если Вам по аське придёт html-тег, вы навряд ли поймёте, что это: запятая или пробел... =) ) В php уже за нас сделали удобную функцию, котороя это делает: "$borg=htmlspecialchars_decode ($borg[1]);" "$borg[1]" - потому что у нас в массиве есть 2 вида, один не полностью обрезан, второй обрезан...
Ну и естественно, нам надо вывести то, что получили, посмотреть - как да что =) : "echo($borg);" Всё =) Да, и ещё: если Вы будете выводить на сайте (через браузер), то Вам хватит:

Код
$borgs=file_get_contents( "http://bash.org.ru/random" );
preg_match( '/
(.*?)<\/div>/is', $borgs, $borg ); echo($borg);


Поздравляю, у нас есть случайная цитата с http://bash.org.ru!

[close]
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 26.7.2011, 17:55


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



Тут очень глубокие знания нада, да еще и не только в sh.


Сообщение отредактировал VINRARUS - 26.7.2011, 17:57
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 26.7.2011, 19:43


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



смотри : скачиваем файл http://bash.org.ru/random,
открываем его на редактирование , удаляем всё что ДО слова утверждена включительно ,
удаляем всё , что ПОСЛЕ слов <hr class="iq"> включительно

Так можно сделать?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 27.7.2011, 5:41


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



я не знаю как на sh качать файлы с нета.
А без скачивания нильзя?

EXL:
Код
wget http://bash.org.ru/random  

И пишешь парсер html кода. Всё это есть в интернете


Сообщение отредактировал EXL - 27.7.2011, 7:06
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
igoripp
сообщение 27.7.2011, 9:47


Самый дерзкий
******

Группа: Пользователи
Сообщений: 1 412
Регистрация: 27.3.2010
Из: Касимов, Муром
Пользователь №: 215 540
Модель телефона: sony ion
Прошивка: Разные

Рейтинг: 1336



А кто подскажет как провернуть одно дело? Есть файл log.txt, в нем последовательность строк, состоящих из одного символа. Мне надо, чтоб в файл gol.txt поместилась одна строка из этих символов, без каких-либо разделительных символов)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
IlluminatI
сообщение 27.7.2011, 12:15


Ветеран
*****

Группа: Пользователи
Сообщений: 670
Регистрация: 15.8.2009
Из: Украина, г.Харьков
Пользователь №: 204 570
Модель телефона: [DROID MAXX][RAZR M]


Настроение:
139



Рейтинг: 520



igoripp, на Си где-то был исходник, могу впринципе собрать, на sh увы, не знаю...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 27.7.2011, 12:40


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



igoripp, ето выдаст все в 1 строчку
tr -d "\n"
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 27.7.2011, 12:44


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



Цитата(VINRARUS @ Сегодня, 8:41)
* А без скачивания нильзя?

напиши как будто он тут /var/etc/file.html
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
igoripp
сообщение 27.7.2011, 13:18


Самый дерзкий
******

Группа: Пользователи
Сообщений: 1 412
Регистрация: 27.3.2010
Из: Касимов, Муром
Пользователь №: 215 540
Модель телефона: sony ion
Прошивка: Разные

Рейтинг: 1336



VINRARUS, a как этим пользоваться? Конструкция вида: tr -d "\n" gol.txt>>ink.txt нем работает(
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 27.7.2011, 13:51


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



cat 1.txt | tr -d "\n" > 2.txt
отак.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
igoripp
сообщение 27.7.2011, 14:58


Самый дерзкий
******

Группа: Пользователи
Сообщений: 1 412
Регистрация: 27.3.2010
Из: Касимов, Муром
Пользователь №: 215 540
Модель телефона: sony ion
Прошивка: Разные

Рейтинг: 1336



Так тоже не работает( вопрос по-прежнему открыт...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 27.7.2011, 15:56


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



igoripp,
у меня работает.
Надеюся ты вместо 1.ТХТ и 2 поставил полные пути к файлам.
Попробуй так.
busybox cat 1.txt | busybox tr -d "\n" > 2.txt
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
igoripp
сообщение 28.7.2011, 5:53


Самый дерзкий
******

Группа: Пользователи
Сообщений: 1 412
Регистрация: 27.3.2010
Из: Касимов, Муром
Пользователь №: 215 540
Модель телефона: sony ion
Прошивка: Разные

Рейтинг: 1336



VINRARUS, Спасибо огромное clapping.gif Такая связка заработала:
Код
busybox cat 1.txt | busybox tr -d "\n" > 2.txt
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 28.7.2011, 11:43


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



Osta, вот етот код ищет в файле строчку с словами 'утверждена' и '<hr class="iq">', и пишет в файл то что между етими словами.
Если вдруг между етими словами есть переносы строк, то оно будет работать неправильно. В таком случае напишы, я допилю.

#!/bin/sh
QT=`cat /
var/etc/file.html`
echo "go))"
echo "$QT" | sed -e '/<hr class="iq">/!d' -e 's/.*утверждена//' -e 's/<hr class="iq">.*//' > /tmp/V.txt
echo end!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 28.7.2011, 13:42


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



tmp/V.txt стабильно равен 0 байт , переносы по-любому есть (
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 28.7.2011, 18:29


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



вот:
#!/bin/sh
QT=`cat /var/etc/file.html`
echo "go))"
echo "$QT" | tr '\n' 'ӕ' | sed -e '/<hr class="iq">/!d' -e 's/.*утверждена//' -e 's/<hr class="iq">.*//' | tr 'ӕ' '\n' > /tmp/V.txt
echo end!


Добавлено позже (28.7.2011, 21:32):
у меня работает.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 28.7.2011, 18:38


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



ӕ - а что это за символ? у меня akelpad утверждает, что он утеряется при сохранении и V.txt пустой опять
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 28.7.2011, 21:15


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



ну ето символ который никто не использует.
Мож попробовать заменить на один из етих:
♀♂♪♫њӕљ¼½¾❄✈✉
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 28.7.2011, 21:27


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



заменил на ^
тхт файл пуст
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 29.7.2011, 4:57


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



Osta,
выложы сюда сюда тот файл который прога должна зчитывать.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 29.7.2011, 10:20


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



Цитата(VINRARUS @ 29.7.2011, 7:57) *

Osta,
выложы сюда сюда тот файл который прога должна зчитывать.

вот такой он скачивается
Прикрепленный файл 2index.rar   ( 11.82 килобайт ) Кол-во скачиваний: 124
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 29.7.2011, 16:07


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



Osta,
чото тот файл не в юникоде, у меня там иногда квадратики.
Фильтром проверил, <hr class="iq"> есть, а слова утверждена нету, наверно изза того что там не юникод.
Но скрипт у меня кусок файла отгрыз и сохранил в 2,5 кб. В принцыпе работает так как ему указали.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 29.7.2011, 16:31


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



можно сделать от первого слова sux до первого слова class="iq" без использования спецсимволов?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 29.7.2011, 19:15


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



нужно уникальное первое слово или сочетание символов. Чтобы не повтоарялося в коде больше нигде, ато указанное тобой слово повторяеться раз 40.
А если за ним будут ненужные слова, их можна отсеять потом.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
igoripp
сообщение 10.8.2011, 19:49


Самый дерзкий
******

Группа: Пользователи
Сообщений: 1 412
Регистрация: 27.3.2010
Из: Касимов, Муром
Пользователь №: 215 540
Модель телефона: sony ion
Прошивка: Разные

Рейтинг: 1336



Этот код для перевода десятичного числа в двоичное, восьмеричное и шестнадцатеричное. Помогите написать код для перевода bin, oct и hex в dec.
Код
#!/bin/sh
mypath=${0%/*}
cd $mypath
#########################################################Получаем значение десятичного числа#######################
d=$(showTextEntry "Введите число:" "" "")
#########################################################Если ввели 0, выводим сразу же ответ#######################
if [ $d -eq 0 ]
then
p="bin=0 oct=0 hex=0"

else
#########################################################Дублируем полученное число 4 раза#######################
m=$d
w=$d
t=$d
k=$d

#########################################################bin#######################
>def.txt
until [ $d -eq 0 ]
do
e=$(( $d % 2 ))
echo $e>>def.txt
d=$(( $d / 2 ))
done

#########################################################oct#######################
>mno.txt
until [ $m -eq 0 ]
do
e=$(( $m % 8 ))
echo $e>>mno.txt
m=$(( $m / 8 ))
done

#########################################################hex#######################
>wxy.txt
until [ $w -eq 0 ]
do
e=$(( w % 16 ))

if [ $e -eq 0 ]
then
echo $e>>wxy.txt

elif [ $e -eq 1 ]
then
echo $e>>wxy.txt

elif [ $e -eq 2 ]
then
echo $e>>wxy.txt

elif [ $e -eq 3 ]
then
echo $e>>wxy.txt

elif [ $e -eq 4 ]
then
echo $e>>wxy.txt

elif [ $e -eq 5 ]
then
echo $e>>wxy.txt

elif [ $e -eq 6 ]
then
echo $e>>wxy.txt

elif [ $e -eq 7 ]
then
echo $e>>wxy.txt

elif [ $e -eq 8 ]
then
echo $e>>wxy.txt

elif [ $e -eq 9 ]
then
echo $e>>wxy.txt

elif [ $e -eq 10 ]
then
echo A>>wxy.txt

elif [ $e -eq 11 ]
then
echo B>>wxy.txt

elif [ $e -eq 12 ]
then
echo C>>wxy.txt

elif [ $e -eq 13 ]
then
echo D>>wxy.txt

elif [ $e -eq 14 ]
then
echo E>>wxy.txt

elif [ $e -eq 15 ]
then
echo F>>wxy.txt

fi
w=$(( $w / 16 ))
done
#########################################################Переворачиваем строки#######################
sed -n '1!G;h;$p' def.txt>fed.txt
sed -n '1!G;h;$p' mno.txt>onm.txt
sed -n '1!G;h;$p' wxy.txt>yxw.txt

#########################################################Делаем столбики строками#######################
busybox cat fed.txt | busybox tr -d "\n" > def.txt
busybox cat onm.txt | busybox tr -d "\n" > mno.txt
busybox cat yxw.txt | busybox tr -d "\n" > wxy.txt

#########################################################Помещаем в переменную значения файлов#######################
p=`cat def.txt`
echo bin: $p>igo.txt
p=`cat mno.txt`
echo oct: $p>>igo.txt
p=`cat wxy.txt`
echo hex: $p>>igo.txt
p=`cat igo.txt`
fi

#########################################################bin#######################
rm .txt

showQ "Результат dec=$k" "$p" 2      

VINRARUS, Поздравляю с назначением)

Сообщение отредактировал igoripp - 10.8.2011, 19:50
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 11.8.2011, 7:26


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



спасиба smile.gif
Ну тут будет сложновато. Нада все действия в обратном порядке делать.
Например строчку опять столбиком будет тяжеловато сделать.
И комбинацию e=$(($d%2)) например я незнаю как обратить, ведь там, как я понял, с любого числа получаються 1 или 2 (тоесть процес не обратим).
К стати етот код точно правильно общитывает?




Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
IlluminatI
сообщение 11.8.2011, 7:59


Ветеран
*****

Группа: Пользователи
Сообщений: 670
Регистрация: 15.8.2009
Из: Украина, г.Харьков
Пользователь №: 204 570
Модель телефона: [DROID MAXX][RAZR M]


Настроение:
139



Рейтинг: 520



Цитата(igoripp @ Вчера, 22:49)
* Этот код для перевода десятичного числа в двоичное, восьмеричное и шестнадцатеричное. Помогите написать код для перевода bin, oct и hex в dec.

жесть... это всё безобразие надо в цикл сворачивать, причём сразу. При таком кол-ве одинаковых строк очень легко незаметить ошибку
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
igoripp
сообщение 11.8.2011, 8:03


Самый дерзкий
******

Группа: Пользователи
Сообщений: 1 412
Регистрация: 27.3.2010
Из: Касимов, Муром
Пользователь №: 215 540
Модель телефона: sony ion
Прошивка: Разные

Рейтинг: 1336



Считать должен правильно, я проверял только на простых числах... Которые в уме могу посчитать. Алгоритм должен быть правильный)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
IlluminatI
сообщение 11.8.2011, 8:04


Ветеран
*****

Группа: Пользователи
Сообщений: 670
Регистрация: 15.8.2009
Из: Украина, г.Харьков
Пользователь №: 204 570
Модель телефона: [DROID MAXX][RAZR M]


Настроение:
139



Рейтинг: 520



в hex можно делать проверку: если от 0 до 9 то записывать цифру, а для букв можно оставить эту часть кода, а если есть что-то вроде switch() то юзать его. Для bin и oct, можно создать массив из двух элементов, с числами 2 и 8, и часть кода bin засунуть в цикл.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
igoripp
сообщение 11.8.2011, 8:05


Самый дерзкий
******

Группа: Пользователи
Сообщений: 1 412
Регистрация: 27.3.2010
Из: Касимов, Муром
Пользователь №: 215 540
Модель телефона: sony ion
Прошивка: Разные

Рейтинг: 1336



Там и так цикл есть)

Добавлено позже (11.8.2011, 12:06):
Насчет хекс, ты прав) а остальное я не понял(
until это и есть цикл

Сообщение отредактировал igoripp - 11.8.2011, 8:08
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
IlluminatI
сообщение 11.8.2011, 8:48


Ветеран
*****

Группа: Пользователи
Сообщений: 670
Регистрация: 15.8.2009
Из: Украина, г.Харьков
Пользователь №: 204 570
Модель телефона: [DROID MAXX][RAZR M]


Настроение:
139



Рейтинг: 520



я сишными вставками покажу)
Код

int ss[2] = { 2, 8 };
for( int i = 0; i < 2; i++ )
{
until [ $d -eq 0 ]
do
e=$(( $d % ss[i] ))
echo $e>>def.txt
d=$(( $d / ss[i] ))
done
}

вот такой код переводит в двоичную и восьмеричную системы счисления
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Programmer-tm(Мотофан.)
сообщение 11.8.2011, 9:20


Мотофан
*******

Группа: Пользователи
Сообщений: 1 681
Регистрация: 21.3.2010
Из: Из мира сего
Пользователь №: 215 291
Модель телефона: Moto X Play
Прошивка: Модифицированная...


Настроение:
Делать невозможное возможным...



Рейтинг: 620



Ребят. Давайте подумаем, как сделать русско английский перевод нормально.
Пока у меня такая идея:

Код

Perevod()
{
slovo=`showTextEntry 0 "Translator" "Введите текст:"`
if [ "$slovo" = "" ]
then
    showQ "Translator" "Я не могу перевести пустоту... Введёте слово снова?" 1
    tmp1="$?"
    if [ "$tmp1" = "1" ]
    then
        Perevod
    else
        showNotify "Translator" "Вы отаказались от ввода..." 0 2
        exit
    fi
else
    if sed "/^$slovo/!d" $mypath/data2/bd
    then
        text="`sed "/^$slovo/!d" $mypath/data2/bd`"
        showQ "Translator" "$text" 2
    else
        showNotify "Translator" "Извините, но такого слова нету в моей базе..." 0 2
        exit
    fi
fi
}
Perevod


Ну тут он дофига ненужных строк ещё припысывает...
Вот думаю как побороть...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Написание скриптов #!/bin/sh for UNIX, Кто поможет? · Motorola на Linux OS · Forum
 

7 страниц V < 1 2 3 4 > » 
Ответ в темуСоздание новой темы
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 13.6.2025, 9:44

Форум живёт: