Назад | Перейти на главную страницу

Предсказуемая случайная перетасовка строк ввода с помощью bash `$ RANDOM` не работает

У меня на входе около 100 строк. Я хочу перемешать их "случайным образом", но хочу контролировать это. то есть я хочу засеять генератор случайных чисел, чтобы всегда производить тот же порядок.

Я думал, что смогу использовать bash(1)'s $RANDOM переменная, но это всегда дает разные результаты. В чем дело?

RANDOM=1 cat myfile | while read LINE ; do echo "$RANDOM $LINE" ; done | sort

Пайплайн состоит из 3 разных процессов, поэтому вам нужно засеять RANDOM в соответствующем:

cat myfile | 
(RANDOM=1; while read LINE ; do echo "$RANDOM $LINE" ; done ) |
sort