Как получить стандартный вывод из 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
если бы был один.