如何从子shell获得标准输出?

时间:2012-07-02 03:01:55

标签: linux shell subshell

我有这样的剧本吗?

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

主shell没有打印任何信息。 如何从子命令获得输出?

2 个答案:

答案 0 :(得分:1)

只需重定向相应的输出通道即可获得所有输出:

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

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

但是,如果您没有看到任何内容,可能是scp的诊断输出被禁用了吗? 真实命令中某处有“-q”选项吗?

答案 1 :(得分:0)

您实际上并没有运行scp。当你使用

VAR=value cmd ...

语法,VAR=value设置进​​入cmd的环境,但在当前shell中不可用。 -c之后的命令为空,如果有的话,则为$command之前的值。

相关问题