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


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

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

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

Оффлайн ShadowUser15

  • Автор темы
  • Активист
  • *
  • Сообщений: 718
    • Просмотр профиля
Re: Помогите с синтаксисом в другом скрипте
« Ответ #15 : 18 Октября 2014, 23:43:05 »
(Нажмите, чтобы показать/скрыть)
В третьем варианте намёк на выполнение арифметической операции над несовместимыми типами данных.
А вот с этого момента поподробнее, т.е. что а воспринята как строка очевидно, но как с этим бороться?
вероятное введение нестандартных десятичностей, внутри системы - заставляет задуматься о переходе на другой

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Помогите с синтаксисом в другом скрипте
« Ответ #16 : 19 Октября 2014, 00:06:21 »
Bash не предназначен для обработки бинарных данных.
Для этого используются внешние утилиты od/hexdump/xxd/etc.

Оффлайн ShadowUser15

  • Автор темы
  • Активист
  • *
  • Сообщений: 718
    • Просмотр профиля
Re: Помогите с синтаксисом в другом скрипте
« Ответ #17 : 19 Октября 2014, 00:08:02 »
а бинарные операции там зачем????
(Нажмите, чтобы показать/скрыть)
(Нажмите, чтобы показать/скрыть)
идеи, типа ' отсюда - буду завтра проверять.
« Последнее редактирование: 19 Октября 2014, 00:31:55 от ShadowUser15 »
вероятное введение нестандартных десятичностей, внутри системы - заставляет задуматься о переходе на другой

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Помогите с синтаксисом в другом скрипте
« Ответ #18 : 19 Октября 2014, 00:54:10 »
а воспринята как строка очевидно, но как с этим бороться?
Зачем этим "бороться"? Пользоваться надо тем, что bash не определяет типы переменных.
Хотите арифметическую операцию — укажите что именно её Вы и хотите: заключите выражение в $(()) или $[]. В противном случае «+» воспримется просто как символ.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Помогите с синтаксисом в другом скрипте
« Ответ #19 : 19 Октября 2014, 06:13:53 »
Код: (bash) [Выделить]
a=$'\x7f'
a=$(printf "%q" "$a")
a=${a/\\}
a=${a/\'\'}
if [ ${#a} -le 1 ] ; then a=$(printf "%03o" "'$a") ; fi
a=${a//[[:punct:]]}
a=${a//0/000}
a=${a//1/001}
a=${a//2/010}
a=${a//3/011}
a=${a//4/100}
a=${a//5/101}
a=${a//6/110}
a=${a//7/111}
if [[ $a =~ 0..1..... ]] ; then echo OK ; fi
« Последнее редактирование: 19 Октября 2014, 20:01:25 от ArcFi »

Оффлайн ShadowUser15

  • Автор темы
  • Активист
  • *
  • Сообщений: 718
    • Просмотр профиля
Re: Помогите с синтаксисом в другом скрипте
« Ответ #20 : 19 Октября 2014, 09:53:26 »
а воспринята как строка
заключите выражение в $(()) или $[].
вот тут-то и засада! Не пашет. Говорит ошибка синтаксиса.

Пользователь решил продолжить мысль 19 Октября 2014, 10:24:57:
ArcFi, Спасибо! проверю как оно пойдёт для моего случая уже завтра - лпт порт жалко.
Хотя уже интересно, можно ли победить баш :) "в лоб"
« Последнее редактирование: 19 Октября 2014, 10:24:57 от ShadowUser15 »
вероятное введение нестандартных десятичностей, внутри системы - заставляет задуматься о переходе на другой

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Помогите с синтаксисом в другом скрипте
« Ответ #21 : 19 Октября 2014, 18:49:23 »
ArcFi,
(Нажмите, чтобы показать/скрыть)
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Помогите с синтаксисом в другом скрипте
« Ответ #22 : 19 Октября 2014, 19:06:54 »
Azure, да, насчёт bc я в курсе, но есть пара моментов…
На входе набор бинарных данных, который сперва надо преобразовать к числовому виду, и там по-любому придётся заюзать костыли.
А кроме того, ТС настаивает на использовании Bash без вспомогательных утилит.

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Помогите с синтаксисом в другом скрипте
« Ответ #23 : 19 Октября 2014, 19:42:14 »
ArcFi,
(Нажмите, чтобы показать/скрыть)
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Помогите с синтаксисом в другом скрипте
« Ответ #24 : 19 Октября 2014, 20:01:54 »
bash сам по себе "вспомогательная утилита"…
Я эту мысль пытаюсь донести ещё с прошлой страницы, но пока без особого успеха.

a=${a//[[:punct:]]}
Спасибо, пару строк сэкономил.

 

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