Как получить стандартный вывод из subshell?

У меня есть такой сценарий?

command='scp xxx 192.168.1.23:/tmp'
su - nobody -c "$command"

Основная оболочка не печатала никакой информации. Как я могу получить вывод из подкоманды?

2 ответа

Вы можете получить весь его вывод, просто перенаправив соответствующий выходной канал:

command='scp ... '
su - nobody -c "$command" > file

или же

var=$(su - nobody -c "$command")

Но если вы ничего не видите, возможно, вывод диагностики scp отключен? Есть ли опция "-q" в вашей реальной команде?

Вы на самом деле не запускаете scp. Когда вы используете

VAR=value cmd ...

синтаксис VAR=value установка идет в среду cmd но это не доступно в текущей оболочке. Команда после вашего -c пусто, или предыдущее значение $command если бы был один.

Другие вопросы по тегам