Bash脚本运行命令时出现问题

时间:2015-08-13 07:27:47

标签: bash shell scripting

尝试在BASH脚本中运行我认为是一个简单的命令,但它似乎正在抓住我的东西。我想收集许多Java进程的CROSSTABS信息并附加到单独的文件中。所以我想我会尝试一个,然后扩展,......它不应该太难。

这是脚本:

vstat

当脚本运行时,我收到以下错误:

    #!/bin/bash
    echo JSTATS from Components
    # Variables
WorkflowLog=">> /tmp/jsm04-workflow-gc.log"
Workflow=$(ps -ef | grep 'java' | grep -i 'workflowcomponent' |   awk '{print "jstat -gcutil "$2" 200 10"}')
echo $Workflow
echo $WorkflowLog
echo Running jstats...............................
command $Workflow $WorkflowLog

我是不是错误地传递了命令,还是应该以稍微不同的方式运行命令行?请指教,谢谢。

2 个答案:

答案 0 :(得分:0)

如果是 - 变量存在问题。

WorkflowLog=$(>> /tmp/jsm04-workflow-gc.log)

答案 1 :(得分:0)

您不能在变量中存储>>之类的shell结构,而变量Workflow是命令的结果,而不是命令行本身。要执行的代码属于函数,而不是文本参数。

您应该像这样构建代码:

#!/bin/bash
echo JSTATS from Components
# Variables
WorkflowLog="/tmp/jsm04-workflow-gc.log"
Workflow () {
    ps -ef | 
     grep 'java' | 
     grep -i 'workflowcomponent' |  
     awk '{print "jstat -gcutil "$2" 200 10"}'
}

echo Running jstats...............................
Workflow >> "$WorkflowLog"