写入输出流并从Shell脚本函数返回值

他们可以

在shell脚本中,echo可用于从函数返回值。但是,如果这些功能要打印一些消息。然后,可以通过将其重定向到错误流来完成此操作。下面是一个简化的示例:

#this is a function that returns a value, as well as
#print some messages
function logic(){
    echo >&2 "start of logic"
    echo >&2 "perform logic, to get value"

    echo "ok"
}

function smain(){
    local result=$(logic)

    echo "result is >$result<"

    if [ "$result" == "ok" ];then
        echo "script successful"
    else
        echo "script failed"
    fi
}

smain

以下是示例执行输出:

sh sample.sh
start of logic
perform logic, to get value
result is >ok<
script successful

很好 但是当此脚本用作autosys作业时。然后来自逻辑功能的消息最终会在错误流文件触发警报中出现。

可以通过任何方式将逻辑函数的消息写入输出流,而不将消息与返回值混合。


编辑1:-

#!/usr/bin/env bash

function Return(){
    printf -v "$1" '%s' '$*'
}

function logic() {
    local arg=$1
    local system=$2
    echo "start of logic"
    echo "all params are >$*<"
    echo "perform logic, to get value"
    echo >&2 "logic successfully completed"
    printf -v "$1" '%s' 'abraKaDabra'
}

function main() {
    local result='' ;  logic "$@" result

    printf 'result is >%s<\n' "$result"

    if [ "$result" = "ok" ]; then
        echo "script successful"
    else
        echo "script failed"
    fi

    echo >&2 "end of main"
}

main "$@"

输出:-

$

sh returnValueWithDebugging.sh abc xyz > out.log 2>err.log

$

cat err.log
logic successfully completed
end of main

$

cat out.log
start of logic
all params are >abc xyz result<
perform logic, to get value
result is ><
script failed
詹姆斯·布朗

这行得通吗?:

#this is a function that returns a value, as well as                            
#print some messages                                                            
function logic(){
    echo "start of logic"
    echo "perform logic, to get value"

    echo "ok" >&2
}

function smain(){
    { local result=$( { { logic ; } 1>&3 ; } 2>&1); } 3>&1

    echo "result is >$result<"

    if [ "$result" == "ok" ];then
        echo "script successful"
    else
        echo "script failed"
    fi
}

smain

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何调用javascript函数并从javascript函数获取返回值

来自分类Dev

在shell脚本中获取git返回值

来自分类Dev

从Perl脚本返回值

来自分类Dev

获取函数返回值

来自分类Dev

从写入STDOUT的函数返回值的最佳方法

来自分类Dev

如何将函数的返回值写入文件?

来自分类Dev

从node.js文件向shell脚本返回值

来自分类Dev

函数无法返回值

来自分类Dev

从python脚本返回值到shell脚本

来自分类Dev

函数的返回值

来自分类Dev

从函数{google apps脚本}获取返回值

来自分类Dev

从线程函数返回值

来自分类Dev

函数返回值的范围

来自分类Dev

从异步函数返回值

来自分类Dev

Unix Shell脚本:退出并返回值

来自分类Dev

在Shell脚本中获取进程的返回值

来自分类Dev

PostgreSQL 9.1:在表上设置注释,并从函数返回值

来自分类Dev

从写入STDOUT的函数返回值的最佳方法

来自分类Dev

Shell函数的失败返回值

来自分类Dev

VB脚本中的递归函数返回值

来自分类Dev

将Shell脚本的返回值转发到C / C ++

来自分类Dev

不能在写入中使用函数返回值

来自分类Dev

执行shell脚本代码取决于php返回值

来自分类Dev

为什么某些函数既通过返回值又通过写入传递的指针来返回结果?

来自分类Dev

在循环中获取函数的返回值 - shell 脚本

来自分类Dev

使用 PostgreSQL xpath 函数并从数组中获取第一个返回值

来自分类Dev

函数返回值

来自分类Dev

shell 函数的返回值不能超过 255 吗?

来自分类Dev

如何输出函数的返回值