4

我无法理解为什么其中一个功能可以正常工作 [status-up],而另一个则完全挂起,根本没有输出。[状态记录]

两者pidfilerecfile都是它们各自 PID 文件的有效路径/var/run/,并且都只包含一个 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"
}
4

1 回答 1

4

cat如果没有给出输入,则挂起 - 以及许多其他程序。您的一条路径很可能是空的,因为您可以通过以下if语句:

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

一旦你进入街区,你就挂断电话cat <empty>。正如@ruakh 所指出的,你应该让它工作双引号变量。

于 2013-07-05T21:21:03.783 回答