当使用“logger”命令将消息从脚本写入系统日志时,我使用-t
“标签”将脚本名称与写入日志的消息一起存储。
我这样做是为了使查找条目更容易进行故障排除。
关于下面示例脚本的几个问题。
我正在调用一个函数_foo
并希望将其输出捕获到一个变量中$bar
,但也使用返回状态(可能不是0
or 1
),或者失败则exit
停止脚本(当非零时)。
exit
in 函数不起作用?_foo
( if ! bar="$(_foo)"
)。当调用“正常”时它会起作用。
exit
如果我将 if 语句更改为此(但我丢失了其输出),则会停止脚本:if ! _foo ; then
exit
行为类似于return
并且不会停止脚本:if ! bar="$(_foo)" ; then
var="$(func)"
不行。_foo
是否有更好的方法来捕获函数中into的输出$bar
以及使用返回状态(对于0
or以外的其他情况1
,例如case
语句?)我有一种感觉,我可能需要以某种方式使用trap
。
这是一个简单的例子:
#!/usr/bin/env bash
set -e
set -u
set -o pipefail
_foo() {
local _retval
echo "baz" && false
_retval=$?
exit ${_retval}
}
echo …
Run Code Online (Sandbox Code Playgroud)