重定向函数输出到printf状态似乎无法在bash中工作

时间:2014-02-15 12:13:26

标签: linux bash function printf

创建了简单的bash脚本,如下所示

#!/bin/bash

declare -a message_list=("ok" "error" "cancel")

display_output_message()
{
    message_index=$1
    message_type=$2

    if [ $message_index -gt 2 ]
    then
        printf "Invalid Message index\n"
        exit 0
    fi

    if [ $message_type -eq 1 ]
    then
        printf "%s\n" $message_index
    else
        printf "%s\n" "${message_list[$message_index]}"
    fi
}

printf "message :: %s %s\n" "display_output_message $1 $2" "received"

从上面的脚本我想从display_output_message()调用printf函数,并在它调用的printf语句中打印该函数的输出。我不知道如何将函数输出重定向到printf。到目前为止我所尝试的内容显示在脚本上方,当我运行脚本时,然后显示输出如下

$ ./script.bash 1 2
message :: display_output_message 1 2 received

所以printf只打印我要调用的函数名称和参数列表,但我想输出如下

$ ./script.bash 1 2
message :: ok received

我遗漏了一些未成年人,或者可能不知道如何将输出重定向到printf

有任何想法我该如何解决它。?

1 个答案:

答案 0 :(得分:3)

您需要实际调用该功能。现在你只是传递了一段文字。

试试这个:

printf "message :: %s %s\n" "$(display_output_message $1 $2)" "received"