Используя псевдо tty с ssh приводит к предупреждению

(0..50).to_a.sort{ rand() - 0.5 }[0..x] 

(0..50).to_a может быть заменен любым массивом. 0 "minvalue", 50 "макс. значение" x, "сколько значений я хочу выйти"

, конечно, ее невозможное для x, которому разрешат быть больше, чем макс. минута:)

В расширении того, как это работает

(0..5).to_a  ==> [0,1,2,3,4,5]
[0,1,2,3,4,5].sort{ -1 }  ==>  [0, 1, 2, 4, 3, 5]  # constant
[0,1,2,3,4,5].sort{  1 }  ==>  [5, 3, 0, 4, 2, 1]  # constant
[0,1,2,3,4,5].sort{ rand() - 0.5 }   ==>  [1, 5, 0, 3, 4, 2 ]  # random
[1, 5, 0, 3, 4, 2 ][ 0..2 ]   ==>  [1, 5, 0 ]

Сноски:

стоит упомянуть, что в то время, когда на этот вопрос первоначально ответили, сентябрь 2008, который Array#shuffle был или не доступен или не уже известный мне, следовательно приближение в [1 112] Array#sort

И существует заграждение предложенных редактирований к этому в результате.

Так:

.sort{ rand() - 0.5 }

Может быть лучше, и короче выразил на современных рубиновых реализациях с помощью [1 121]

.shuffle

Кроме того,

[0..x]

, Может быть, более очевидно, записан с [1 113] Array#take как:

.take(x)

Таким образом, самый легкий способ произвести последовательность случайных чисел на современном рубине:

(0..50).to_a.shuffle.take(x)
5
задан WilliamKF 30 September 2009 в 02:01
поделиться

1 ответ

Эту проблему можно обойти, передав -n в ssh вместо -t -t. Из справочной страницы ssh:

 -n      Redirects stdin from /dev/null (actually, prevents reading from
         stdin).  This must be used when ssh is run in the background.  A
         common trick is to use this to run X11 programs on a remote
         machine.  For example, ssh -n shadows.cs.hut.fi emacs & will
         start an emacs on shadows.cs.hut.fi, and the X11 connection will
         be automatically forwarded over an encrypted channel.  The ssh
         program will be put in the background.  (This does not work if
         ssh needs to ask for a password or passphrase; see also the -f
         option.)

Это еще один способ решения проблемы, когда stdin берется из вызывающего процесса и передается ssh, однако я хотел бы понять, как избежать предупреждения при использовании -t -t.

4
ответ дан 15 December 2019 в 01:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: