如何从执行的命令中捕获错误消息?

如何从执行的命令中捕获错误消息?

我的任务是创建一个自动服务器强化脚本,他们需要的一件事是每个执行命令的所有输出的报告。我想将错误消息存储在字符串中并将其附加到文本文件中。

假设我运行了这个命令:

/sbin/modprobe -n -v hfsplus

在我的机器上运行它的输出将是:

FATAL: Module hfsplus not found

如何将该错误消息存储在字符串中?任何帮助将不胜感激。谢谢!

答案1

您可以通过重定向错误命令来完成此操作:

/sbin/modprobe -n -v hfsplus 2> fileName 

作为脚本

#!/bin/bash
errormessage=$( /sbin/modprobe -n -v hfsplus 2>&1)
echo $errormessage

或者

 #!/bin/bash
errormessage=`/sbin/modprobe -n -v hfsplus 2>&1 `
echo $errormessage

如果您想附加错误,请使用>>而不是>

确保使用2>&1而不是2> &1避免错误“意外标记‘&’附近的语法错误”

答案2

简单地在 bash 脚本中存储为字符串:

X=`/sbin/modprobe -n -v hfsplus 2>&1`
echo $X

这可能会好一点,因为执行命令时您会看到消息:

TMP=$(mktemp)
/sbin/modprobe -n -v hfsplus 2>&1 | tee $TMP
OUTPUT=$(cat $TMP)
echo $OUTPUT
rm $TMP

答案3

要在变量中返回错误消息,很简单;

error=$(/sbin/modprobe -n -v hfsplus 2>&1 1>/dev/null)

echo $error

答案4

要附加到文件,请使用/sbin/modprobe -n -v hfsplus 2>> filename

相关内容