For循环不在Shell中的函数声明中运行

时间:2015-01-17 22:46:27

标签: linux shell unix for-loop

执行函数end_process时,我的for循环不在shell中运行。类似的循环在函数声明之外运行。我想知道它为什么不运行或如何运行。

function end_process {

    {
    echo "stopped on $(date)"
    echo "$arguments_line"
    echo "$invalid_arguments_line"
    } >> spy.log

    for ((i=0; i<counter; i++)); do
            echo "${usernames[$i]}" >> spy.log
            echo "test line"
    done
    echo "007 Signing Out"
    exit 0
}

我正在使用bash

#!/斌/庆典

也尝试了这个

function end_process {

    {
    echo "stopped on $(date)"
    echo "$arguments_line"
    echo "$invalid_arguments_line"
    } >> spy.log

    for i in `seq 0 $counter`
    do
    #for ((i=0; i<counter; i++)); do
            echo "i is $i"
            echo "${usernames[$i]}" >> spy.log
            echo "test line"
    done
    echo "007 Signing Out"
    exit 0
 }

但都没有效果

1 个答案:

答案 0 :(得分:0)

问题是我正在调用函数

trap end_process SIGUSR1

但是我们需要为函数名称

添加转义字符串
trap 'end_process' SIGUSR1

我想这只是RTFM的常见问题