我的任务是创建一个自动服务器强化脚本,他们需要的一件事是每个执行命令的所有输出的报告。我想将错误消息存储在字符串中并将其附加到文本文件中。
假设我运行了这个命令:
/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