Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Помогите с синтаксисом в другом скрипте  (Прочитано 1738 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ShadowUser15

  • Автор темы
  • Активист
  • *
  • Сообщений: 714
    • Просмотр профиля
команда от рута:
root...# echo $(($(dd if=/dev/port bs=1 skip=889 count=1 2>/dev/null) & (1 << 6)))
bash:  & (1 << 6): ошибка синтаксиса: ожидается операнд (ошибочная метка " & (1 << 6)")

проблема там где /ошибочная метка "/ - сожран символ, но при редактировании поста виден нормально, для точности см. скрин в документе

проявляется ТОЛЬКО в одном положении - "0" пишет исправно.
(Нажмите, чтобы показать/скрыть)
// = примечание,

UPD!:
Код: Bash
  1. a=$(dd if=/dev/port bs=1 skip=889 count=1 2>/dev/null)
  2. echo $a
работает
Код: Bash
  1. a=$(dd if=/dev/port bs=1 skip=889 count=1 2>/dev/null)+128
  2. echo $a
тоже работает :)
на выходе получается строка "?+128" (без кавычек)
а воспринята как строка
заключите выражение в $(()) или $[].
вот тут-то и засада! Не пашет. Говорит ошибка синтаксиса.
внешний вид (скриншот) https://forum.ubuntu.ru/index.php?action=dlattach;topic=250560.0;attach=35744
подробно зачем оно https://forum.ubuntu.ru/index.php?topic=250560.msg1984965#msg1984965
« Последнее редактирование: 19 Октябрь 2014, 10:01:33 от ShadowUser15 »
вероятное введение нестандартных десятичностей, внутри системы - заставляет задуматься о переходе на другой

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля

Оффлайн ShadowUser15

  • Автор темы
  • Активист
  • *
  • Сообщений: 714
    • Просмотр профиля
Re: Помогите с синтаксисом в другом скрипте
« Ответ #2 : 15 Октябрь 2014, 21:49:50 »
(Нажмите, чтобы показать/скрыть)
подозреваю что чтото& является командой, которая ждёт не то что в неё передаётся, а когда бит - всё нормально.
может глюк парсера команд баша? или надо как-то экранировать вложенный $(дд)? или там ещё пары скобок не хватает?
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 15 Октябрь 2014, 22:04:12 от ShadowUser15 »
вероятное введение нестандартных десятичностей, внутри системы - заставляет задуматься о переходе на другой

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: Помогите с синтаксисом в другом скрипте
« Ответ #3 : 15 Октябрь 2014, 22:10:35 »
Цитировать
ну а что именно делает "2>/dev/null" в конце dd я не понимаю. Точнее не понимаю при чём тут "2" - так то ясно что консольный текст дд со скоростью в игнор.

Это STDERR, он здесь не причем.
Байт то считывается нормально, побитовые операции в баше работают с числами а не с байтами как не странно, в этом все дело как мне кажется.
Чем приведенное выше решение в виде программы на C не устроило?

Оффлайн ShadowUser15

  • Автор темы
  • Активист
  • *
  • Сообщений: 714
    • Просмотр профиля
Re: Помогите с синтаксисом в другом скрипте
« Ответ #4 : 15 Октябрь 2014, 23:28:28 »
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 16 Октябрь 2014, 23:34:19 от ShadowUser15 »
вероятное введение нестандартных десятичностей, внутри системы - заставляет задуматься о переходе на другой

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: Помогите с синтаксисом в другом скрипте
« Ответ #5 : 17 Октябрь 2014, 13:24:53 »
Кросскомпилятор же

sudo apt-get install gcc-arm-linux-gnueabi
arm-linux-gnueabi-gcc -static -march=armv6 byteread.c -o byteread-arm

file ./byteread-arm

Цитировать
./byteread-arm: ELF 32-bit LSB  executable, ARM, EABI5 version 1 (SYSV), statically linked, for GNU/Linux 2.6.32, not stripped

Оффлайн ShadowUser15

  • Автор темы
  • Активист
  • *
  • Сообщений: 714
    • Просмотр профиля
Re: Помогите с синтаксисом в другом скрипте
« Ответ #6 : 18 Октябрь 2014, 14:04:17 »
Согласен, что создать бинарную программу для этих целей как минимум не сложнее чем скрипт (а для меня так и проще, на паскале ужеб работало, и как минимум в арм он компилится).
Но! Мне уже просто интересно - почему так странно ведёт себя баш.
« Последнее редактирование: 18 Октябрь 2014, 14:08:52 от ShadowUser15 »
вероятное введение нестандартных десятичностей, внутри системы - заставляет задуматься о переходе на другой

Оффлайн ArcFi

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 15194
    • Просмотр профиля
    • aetera.net
Re: Помогите с синтаксисом в другом скрипте
« Ответ #7 : 18 Октябрь 2014, 16:07:28 »
U+007F <control> = DELETE — управляющий символ, по сути, клавиша "Del".
Наверно тут надо делать так:
dd | {od|hexdump} | grep

Оффлайн ShadowUser15

  • Автор темы
  • Активист
  • *
  • Сообщений: 714
    • Просмотр профиля
Re: Помогите с синтаксисом в другом скрипте
« Ответ #8 : 18 Октябрь 2014, 19:11:25 »
(Нажмите, чтобы показать/скрыть)
Греп может заработает - но тащить 2 сравнительно тяжёлых команды (как и любые текстовые)...
Неужели нет нормального способа???
например
Код: Bash
  1. a=$(dd if=/dev/port bs=1 skip=889 count=1 2>/dev/null)
  2. echo $a
исправно работает

Так что вопрос: как с этой $a выполнить какую-нибудь побитовую операцию? А именно проверку на установленность бита.
« Последнее редактирование: 18 Октябрь 2014, 20:44:45 от ShadowUser15 »
вероятное введение нестандартных десятичностей, внутри системы - заставляет задуматься о переходе на другой

Оффлайн ArcFi

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 15194
    • Просмотр профиля
    • aetera.net
Re: Помогите с синтаксисом в другом скрипте
« Ответ #9 : 18 Октябрь 2014, 19:53:26 »
Код: Bash
  1. echo -en 'abc\x7fdef' | od -An -to1 -N1 -j3 | sed 's/0/000/g;s/1/001/g;s/2/010/g;s/3/011/g;s/4/100/g;s/5/101/g;s/6/110/g;s/7/111/g' | grep -qE '1[0-1]{5}$' && echo OK || echo FAIL
« Последнее редактирование: 18 Октябрь 2014, 19:56:49 от ArcFi »

Оффлайн ShadowUser15

  • Автор темы
  • Активист
  • *
  • Сообщений: 714
    • Просмотр профиля
Re: Помогите с синтаксисом в другом скрипте
« Ответ #10 : 18 Октябрь 2014, 20:00:01 »
od/grep в данном случае костыль. Странный и неестественный.
вероятное введение нестандартных десятичностей, внутри системы - заставляет задуматься о переходе на другой

Оффлайн ArcFi

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 15194
    • Просмотр профиля
    • aetera.net
Re: Помогите с синтаксисом в другом скрипте
« Ответ #11 : 18 Октябрь 2014, 20:04:55 »
Вы же сами просили рабочее решение на Bash.
Вот и оно.

Bash не предполагает сведение зависимостей к минимуму.
Нужен минимализм — используйте какой-нибудь C.

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 14855
  • Я не слышу.
    • Просмотр профиля
Re: Помогите с синтаксисом в другом скрипте
« Ответ #12 : 18 Октябрь 2014, 20:06:58 »
ShadowUser15,
всё функция.
ls /usr/bin/
~.o

Оффлайн ShadowUser15

  • Автор темы
  • Активист
  • *
  • Сообщений: 714
    • Просмотр профиля
Re: Помогите с синтаксисом в другом скрипте
« Ответ #13 : 18 Октябрь 2014, 21:50:12 »
Блин!
Код: Bash
  1. a=$(dd if=/dev/port bs=1 skip=889 count=1 2>/dev/null)|echo $a
НЕ РАБОТАЕТ
а вот
Код: Bash
  1. a=$(dd if=/dev/port bs=1 skip=889 count=1 2>/dev/null)
  2. echo $a
работает... странно, точнее не странно, но всё равно :( потом с этой а ничего не сделать :(
самое весёлое что
Код: Bash
  1. a=$(dd if=/dev/port bs=1 skip=889 count=1 2>/dev/null)+128
  2. echo $a
тоже работает :)
на выходе получается строка "?+128" (без кавычек)
« Последнее редактирование: 18 Октябрь 2014, 21:53:39 от ShadowUser15 »
вероятное введение нестандартных десятичностей, внутри системы - заставляет задуматься о переходе на другой

Оффлайн ArcFi

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 15194
    • Просмотр профиля
    • aetera.net
Re: Помогите с синтаксисом в другом скрипте
« Ответ #14 : 18 Октябрь 2014, 23:04:12 »
Первый вариант бессмысленен чуть менее, чем полностью.
В третьем варианте намёк на выполнение арифметической операции над несовместимыми типами данных.

 

Страница сгенерирована за 0.12 секунд. Запросов: 24.