jmeter执行复杂的shell命令

时间:2016-02-12 12:16:14

标签: linux shell process command jmeter

我使用OS Process Sampler执行以下shell命令

cat ${myDataFile} | myProcessor.sh --param1 valueParam1 --param2 valueParam2

command: cat 
Standard Input(stdin): ${myDataFile}
working directory: ${myHome}
command Parameters: | myProcessor.sh --param1 valueParam1 --param2 valueParam2

响应

cat: | myProcessor.sh --param1 valueParam1 --param2 valueParam2: No such file or directory

显然,“cat”正在将命令参数作为文件绑定。

如何克服这个问题。这是在AWS EC2环境中运行的

2 个答案:

答案 0 :(得分:1)

如果您使用的是管道|,则需要在shell中启动命令:

bash -c "cat ${myDataFile} | myProcessor.sh --param1 valueParam1 --param2 valueParam2"

${myDataFile}扩展时,您的问题会保持打开状态。我以为它会被jmeter扩展。如果它应该在运行时扩展,则需要使用单引号:

bash -c 'cat ${myDataFile} | myProcessor.sh --param1 valueParam1 --param2 valueParam2'

答案 1 :(得分:0)

  1. 您需要将${myDataFile}作为命令参数传递,它不应该模拟STDIN。有关详细说明,请参阅How to Run External Commands and Programs Locally and Remotely from JMeter文章。
  2. 如果你想使用管道,你需要通过shell解释器(sh,bash,zsh等)调用你的命令。调用echo $SHELL命令并阅读shell上的man条目以了解如何执行此操作。