我有这样的剧本吗?
command='scp xxx 192.168.1.23:/tmp'
su - nobody -c "$command"
主shell没有打印任何信息。 如何从子命令获得输出?
答案 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
之前的值。