如何从变量追加命令的其余部分?

时间:2016-10-16 08:22:33

标签: ksh

在下面的示例中,我想在屏幕上打印文本,并在变量cpstdout设置为1时将此文本附加到文件中。否则只在屏幕上打印文本。我需要使回声部分对append变量具有灵活性。有没有办法纠正我的代码?

#!/bin/ksh
cpstdout=1

if [ $cpstdout -eq 1 ]; then
    append="| tee somefile"
else
    append=""
fi

echo "test string" $append

现在结果如下:

./test.sh
test string | tee somefile

- 当然没有创建文件

打印功能的例子:

print_output(){  
    printf "\t/-------------------------------------------------\\ \n"  
    for i in "$@"; do  
        printf "\t| %-14s %-32s |\n" "$(echo $i | awk -F, '{print $1}')" "$(echo $i | awk -F, '{print $2}')"  
        shift  
    done  
    printf "\t\-------------------------------------------------/\n"  
}

1 个答案:

答案 0 :(得分:1)

将附加命令定义为函数:

ngIf

然后,在output_with_append() { tee -a somefile <<<"$1" } 中,将变量设置为适当的输出函数:

if

最后,使用变量扩展来运行命令:

if [ $cpstdout -eq 1 ]; then
    output=output_with_append
else
    output=echo
fi

请注意,我已使用$output "test_string" ,因为您说您想要附加到文件而不是覆盖它。

tee -a设置为cpstdout,以便我们可以通过命令行参数来控制它:

$1

示例会话如下所示:

cpstdout="$1"