1

Я хочу выполнить следующую команду:

echo $RANDOM 2>&1 >> test.txt 

в этом сеансе экрана:

screen -S test -X eval 'stuff "echo $RANDOM 2>&1 >> test.txt\015"'

Однако вместо выполнения он повторяет следующее:

echo  2>&1 >> test.txt

Что я делаю неправильно?

Я хочу, чтобы команда echo не только сохраняла свой выходной файл в test.txt , но и отображала этот вывод на экране.

2 ответа2

1

Вы можете сделать так:

screen -S test -X exec bash -c 'echo RANDOM=$RANDOM 2>&1 >> test.txt'

Если вы хотите увидеть вывод и сохранить одновременно, вы можете использовать tee:

screen -S test -X exec bash -c 'echo RANDOM=$RANDOM 2>&1 | tee -a test.txt'
0
$ screen -S test -X stuff 'echo \$RANDOM >> /tmp/test 2>&1\n'

Или , если вы хотите , чтобы дублировать выход и управлять им без tee по какой - то причине

$ screen -S shell -X stuff 'echo \$RANDOM 2>&1 | while read; do printf "%s\\n" "\$REPLY"; printf "%s\\n" "\$REPLY" >> /tmp/test; done\n'

Я предполагаю, что вы хотите перенаправить файл stdin и stdout и ваш файл 2>&1 >> test.txt был случайно ошибкой.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .