Linux 如何从subshell获取标准输出?
我有这样的剧本Linux 如何从subshell获取标准输出?,linux,shell,subshell,Linux,Shell,Subshell,我有这样的剧本 command='scp xxx 192.168.1.23:/tmp' su - nobody -c "$command" 主shell没有打印任何信息。 如何从sub命令获取输出?您实际上没有运行scp。当你使用 VAR=value cmd ... 语法,VAR=value设置进入cmd环境,但在当前shell中不可用。-c之后的命令为空,或者如果有,$command之前的值为空。只需重定向相应的输出通道即可获得其所有输出: command='scp ... ' su -
command='scp xxx 192.168.1.23:/tmp'
su - nobody -c "$command"
主shell没有打印任何信息。
如何从sub命令获取输出?您实际上没有运行scp。当你使用
VAR=value cmd ...
语法,
VAR=value
设置进入cmd
环境,但在当前shell中不可用。-c
之后的命令为空,或者如果有,$command
之前的值为空。只需重定向相应的输出通道即可获得其所有输出:
command='scp ... '
su - nobody -c "$command" > file
或
但是如果你没有看到任何东西,可能是scp的诊断输出被禁用了?
在你的真实命令中有一个“-q”选项吗?它确实运行了,机器192.168.1.23可以接收文件。那么好吧,你必须已经设置了
$command
,或者你使用的shell(哪一个?)与我见过的任何shell都不一样。或者你真的有一个分号,你没有提到。在这种情况下,您希望得到什么样的输出?
var=$(su - nobody -c "$command")