在bash脚本中,可以使用重定向操作符将源命令的stdout和stderr捕获或重定向到变量。
要将stdout捕获到变量,可以使用命令替换的方式,将源命令用$()或``包裹起来,并将其赋值给一个变量。例如:
output=$(command)
这样,源命令的stdout输出将被捕获到变量output中。
要将stderr捕获到变量,可以使用重定向操作符2>将stderr重定向到一个临时文件,然后再将该文件内容读取到变量中。例如:
error=$(command 2>/tmp/error.log && cat /tmp/error.log)
这样,源命令的stderr输出将被重定向到/tmp/error.log文件中,并通过cat命令将文件内容读取到变量error中。
如果希望同时捕获stdout和stderr到不同的变量,可以使用管道操作符|将stdout和stderr分别重定向到不同的变量。例如:
output=$(command 2>&1 >/dev/null)
error=$(command 2>/dev/null)
这样,源命令的stdout输出将被捕获到变量output中,stderr输出将被捕获到变量error中。
需要注意的是,重定向操作符>用于将stdout重定向到文件,2>用于将stderr重定向到文件,2>&1用于将stderr重定向到stdout。>/dev/null和2>/dev/null用于将输出丢弃,不保存到文件或变量中。
以上是将源命令中的stdout/stderr捕获/重定向到变量的方法。在实际应用中,可以根据具体需求选择适合的方式进行处理。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云