Jak łatwo ukryć wyniki z poleceń systemowych w ruby? Na przykład niektóre z moich skryptów działają pod kontrolą i nie chcę wyświetlać wyników pobierania.ukrywanie wyników polecenia systemu w rubinach
Dzięki!
Jak łatwo ukryć wyniki z poleceń systemowych w ruby? Na przykład niektóre z moich skryptów działają pod kontrolą i nie chcę wyświetlać wyników pobierania.ukrywanie wyników polecenia systemu w rubinach
Dzięki!
Można użyć bardziej wyrafinowane popen3 mieć kontrolę nad stdin, stdout i stderr oddzielnie, jeśli chcesz:
Open3.popen3("curl...") do |stdin, stdout, stderr, thread|
# ...
end
Jeśli chcesz wyciszyć niektóre strumienie można je zignorować, lub jeśli jest to ważne, aby przekierować lub interpretować ten wynik, nadal masz to dostępne.
Może być konieczne "wymaganie" open3 "". Użyj "myvarname = stdin.read", jeśli chcesz przetwarzać dane wyjściowe. – DanielaWaranie
Aby używać zaawansowanych wyjść, takich jak stdin, stderr itp., Jest w porządku, ale aby uzyskać wyjście z konsoli, jest to zależność, którą można wyeliminować za pomocą np. '% x {bash-command arg1 arg2}' – siegy22
@RaVeN Jedną z zalet 'popen3' lub' system' jest możliwość odpowiedniego rozbicia argumentów: 'system (" example "," --file ", user_supplied_filename)' jest bezpieczne od wstrzyknięcia powłoki. 'system (" example --file # {user_supplied_filename} ")' jest ** bardzo niebezpieczny ** i nie powinno się tego robić. – tadman
Najprostszym sposobem jest przekierowanie StdOut :)
system "curl ... 1>/dev/null"
# same as
`curl ... 1>/dev/null`
najprostszych sposobów innych niż popen:
użyć% x zamiast systemu. To automatycznie rura
rval = %x{curl ...} #rval will contain the output instead of function return value
rury ręcznie/dev/null. Praca w systemie UNIX jak nie Okna
system "curl ... > /dev/null"
Zauważ, że curl ma już 'tryb --silent' można użyć. – Phrogz
Dokładnie tego potrzebowałem. Dzięki! – dejay
możliwy duplikat [Wyłączenie wyjścia polecenia uruchamianego przy użyciu metody "systemowej" podczas uruchamiania go w skrypcie ruby] (http://stackoverflow.com/questions/1960838/suppressing-the-output-of-a-ommand- run-using-system-method-while-running-it-i) –