Я пытаюсь придумать сценарий для передачи флага silent в bash, чтобы весь вывод был направлен на /dev/null
, если он присутствует, и на экран, если его нет.
MWE моего сценария будет:
#!/bin/bash
# Check if silent flag is on.
if [ $2 = "-s" ]; then
echo "Silent mode."
# Non-working line.
out_var = "to screen"
else
echo $1
# Non-working line.
out_var = "/dev/null"
fi
command1 > out_var
command2 > out_var
echo "End."
Я вызываю скрипт с двумя переменными, первая не имеет значения, а вторая ($2
) является фактическим флажком молчания (-s
):
./myscript.sh first_variable -s
Очевидно, что строки out_var
не работают, но они дают представление о том, чего я хочу: способ направить вывод command1
и command2
либо на экран, либо на /dev/null
в зависимости от того, присутствует -s
или нет.
Как я мог это сделать?
=
. При этом и при условии, что вам нужно стандартное расположение вывода по умолчанию, если вы замените"to screen"
на/dev/stdout
и используете$out_var
в перенаправлениях, я считаю, что ваш скрипт должен работать правильно. - person Etan Reisner   schedule 03.09.2014