管道到功能时增加bash变量

时间:2011-07-11 19:24:17

标签: bash pipe increment

我正在尝试执行以下操作:

function func() # in practice: logs the output of a code block to a file
{
    if [ -z "$c" ]; then
        c=1
    else
        (( ++c ))
    fi
    tee -a /dev/null
    echo "#$c"
}

{
echo -n "test"
} | func

{
echo -n "test"
} | func

但增量不起作用,变量c保持'1' 我见过this thread,但它对我的情况不起作用 - 当我尝试时,会出现语法错误。

1 个答案:

答案 0 :(得分:3)

linked question中的诀窍对我有用:

#!/bin/bash
function func() # in practice: logs the output of a code block to a file
{
    if [ -z "$c" ]; then
        c=1
    else
        (( ++c ))
    fi
    tee -a /dev/null
    echo "#$c"
}

func < <(echo -n "test")
func < <(echo -n "test again")

打印:

test#1
test again#2

您使用#!/bin/bash作为您的shebang吗?如果您使用#!/bin/sh,则某些bash扩展名(例如<( ))将无法使用。