有人可以帮助解释如下:的Bash脚本 - shell命令输出重定向
如果键入:
a=`ls -l`
然后ls命令的输出保存在变量a
但如果我尝试:
a=`sh ./somefile`
结果输出到shell(stdout
)而不是变量a
我期望的是shell试图执行脚本'somefile
'的结果操作存储在变量中。
请指出我的理解有什么问题以及可能的解决方法。
谢谢。
编辑:
只是为了澄清,剧本 'somefile
' 可能会或可能不存在。如果存在,那么我希望脚本的输出存储在'a
'中。如果不是,我想要在'a
'中存储错误消息“no such file or dir”
它不是关于权限...我想要将错误消息或返回值存储在变量中。 – 2009-02-06 07:37:27
我在说的是,你不需要运行sh来运行脚本(如果你这样做,sh会在输出上加上自己的防火墙)。只需直接运行脚本,为此,您需要'chmod + x'它。 – paxdiablo 2009-02-06 07:41:54
请尝试以下操作:“chmod u + x somefile; a =`。/ somefile`“,然后看看设置的是什么 – paxdiablo 2009-02-06 07:44:10