linux - 如何将 '<' 和 '>' 传递给 bash 脚本?

标签 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'

它没有“<”或“>”符号。我已经尝试过“”。同样的结果,我完全迷失在这里。

最佳答案

解决方案

问题是线路:

($1)&

你应该改用:

eval $1 &

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

例子

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

给出:

TEST: command not found

cmd="echo TEST"
eval ${cmd}

给出:

TEST

关于linux - 如何将 '<' 和 '>' 传递给 bash 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15270219/

相关文章:

linux - centos服务器上的定时任务

linux - PrtScn 按钮的热键

php - 从 php 运行 Python 脚本,保存进程 pid,不要等待它完成

linux - 运行服务启动脚本时未加载环境变量

linux - 使 : Snippet not working as expected

ios - 将 git head count 添加到 CFBundleVersion

linux - 在脚本中使用 -P 和 mvn install 命令。

bash - 从 bash 读取 java .properties 文件

linux - 附加到 GNU screen ,然后执行命令

java - 如何从 PHP 脚本、Java 程序回调进程状态到调用 bash shell