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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Проблемы с работой Random'а в bash-скрипте (ubuntu 12.04)  (Прочитано 3598 раз)

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

Оффлайн brainiacus

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
#!/bin/bash

_path=/sefef/wefwef/wefwef;

function quote {
echo $(($RANDOM%38+1))
}

echo ${_path}$(quote)
даёт на выводе
absent.sh: 5: absent.sh: function: not found
absent.sh: 6: absent.sh: arithmetic expression: expecting primary: "%38+1"

#!/bin/bash
echo $[RANDOM % 37 +1]
exit 0
выводит тупо
$[RANDOM % 37 +1]
а от
#!/bin/bash
function quote {
    N=$[($RANDOM % 38) +1]
    echo $N
}
echo "zzzzzzz $(quote) sssssssss"
echo "mmmmmmm $(quote) fffffffff"
echo "vvvvvvv $(quote) eeeeeeeee"
exit 0
вообще остаётся
Freezeman2.sh: 2: Freezeman2.sh: function: not found
Freezeman2.sh: 3: Freezeman2.sh: Syntax error: "(" unexpected

Немного ещё поковырявшись добился ещё одного результата. Хотя, и от него толку не очень много, так как эти единицы (или другие какие числа, которые я прибавлю к 37) я уже видел.
#!/bin/bash
quote() { echo $((RANDOM % 37 +1));}
echo "zzzzzzz $(quote) sssssssss"
echo "mmmmmmm $(quote) fffffffff"
echo "vvvvvvv $(quote) eeeeeeeee"
exit 0
получается:
zzzzzzz 1 sssssssss
mmmmmmm 1 fffffffff
vvvvvvv 1 eeeeeeeee
Прошу прощения за фамильярность, не хотел никого обидеть.
Спасибо, что заморочились с этой ерундой, но мне уже кажется, что дело в версии убунты или в каких-то недоустановленных пакетах.



Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
переустановка!!!
Wars ~.o

Оффлайн absent

  • Активист
  • *
  • Сообщений: 368
  • Ubuntu 16.04
    • Просмотр профиля
эх, только операционку не переустанавливайте, надо найти причину и получить ценный опыт :)
разве что с башем случилось, тогда
sudo apt-get install --reinstall bash

Оффлайн brainiacus

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
переустановка!!!
Переустановка на эту же версию не поможет. Версии на реальной машине и на виртуалке - одинаковые. И на виртуалке ничего после установки не менялось.

разве что с башем случилось, тогда
sudo apt-get install --reinstall bash
попробовал, не помогло

Решил, что если ТАКОЙ РАНДОМ возвращает только от 1 до 10, то можно использовать эту особенность. Помурыжился с папками и переименованием файлов с цитатами, но зато скрипт теперь в одной из папок с 1 по 4 выбирает цитату с 1 по 9

#!/bin/bash
_path=/put-k-failam/;
quotefolder() { grep -m1 -ao '[1-4]' /dev/urandom | sed s/0/4/ | head -n1; }
quote() { grep -m1 -ao '[1-9]' /dev/urandom | sed s/0/9/ | head -n1; }
cat ${_path}nachalo-1-podpisi.html ${_path}$(quotefolder)/$(quote) ${_path}konec-podpisi.html > ${_path}podpis-1-sotrudnika.html
cat ${_path}nachalo-2-podpisi.html ${_path}$(quotefolder)/$(quote) ${_path}konec-podpisi.html > ${_path}podpis-2-sotrudnika.html
cat ${_path}nachalo-3-podpisi.html ${_path}$(quotefolder)/$(quote) ${_path}konec-podpisi.html > ${_path}podpis-3-sotrudnika.html

надо найти причину и получить ценный опыт :)
Моих знаний не хватает для поиска причин. Пока фиг с ним, с опытом, если работает, примерно как задумывалось.

Ещё раз спасибо всем откликнувшимся.

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Погугли "Русская рулетка в стиле Bash"
Там всё чётко.

 

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