我怎么能通过'<'和'>'一个bash脚本?

时间:2013-03-07 11:39:40

标签: linux bash

我有bash脚本在另一个线程中运行进程并将其终止,如果它在超时后挂起。一切都完美,但是当过程需要'<'时作为输入或'>'输出到另一个文件,它不计算它们。 代码:

#!/bin/bash
($1)&
PID=$!
echo "Program '"$1"' started, PID="$PID
i=1
while [ $i -le 600 ]
    do
    ps -p $PID >> /dev/null
    if [ $? -ne 0 ]
      then
      wait $PID
      exit $? #success, return rc of program
    fi
    i=$(($i+1))
    echo "waiting 1 second..."
    sleep 1
done

#program does not want to exit itself, kill it
echo "killing program..."
kill $PID
exit 1 #failed

我这样使用它:

safestart.sh './bzip2 -d  sample2.bz2 -k'

并且一切都如预期的那样,但如果我使用这样的东西:

safestart.sh './cc_dry2 < dhryinput > results'

它没有得到'&lt;'或'&gt;'符号。我用“”试过了。同样的结果,我完全迷失在这里。

1 个答案:

答案 0 :(得分:4)

溶液

问题在于:

($1)&

您应该使用:

eval $1 &

另请参阅以下示例以更好地了解问题。

例如

cmd="echo TEST"
$(${cmd})

给出:

  

TEST:找不到命令

cmd="echo TEST"
eval ${cmd}

给出:

  

TEST