2个相同的功能,但一个挂起

时间:2013-07-05 21:11:54

标签: bash

我无法理解为什么其中一个函数可以正常工作[status-up],但另一个根本就没有输出。 [状态-REC]

pidfilerecfile都是/var/run/中各自PID文件的有效路径,两者都只包含没有换行符的PID编号或其他不可打印的字符。

status-up() {
    if [ -f ${pidfile} ]; then
        if ps p $(cat ${pidfile}) >> /dev/null; then
            printf "Upload running as PID %s\n" $(cat ${pidfile})
            return
        fi
    fi
    echo "Upload is not running"
}

status-rec() {
    if [ -f ${recfile} ]; then
        if ps p $(cat ${recfile}) >> /dev/null; then
            printf "Receive running as PID %s\n" $(cat ${recfile})
            return
        fi
    fi
    echo "Receive is not running"
}

1 个答案:

答案 0 :(得分:4)

如果没有给出任何输入,

cat会挂起 - 以及许多其他程序。你的一条路径很可能是空的,因为你可以通过if语句:

$ if [ -f ]; then echo "foo"; fi  
foo

进入区块后,您会挂断电话cat <empty>。正如@ruakh指出的那样,你应该让它工作双引变量。