使用头参数camel exec调用bash脚本

使用头参数camel exec调用bash脚本,bash,apache-camel,Bash,Apache Camel,我有一条路线如下所示: from("direct:start") .to("exec:bash?args=testScript.sh") .log("Process done."); 这条路走得很好。但是现在我需要用一个参数调用这个脚本,这个参数是一个呼气头 所以,我试着: .to("exec:bash?args=testScript.sh ${header.testHeader}") 但是,它不是使用头的实际值(整数)运行脚本,而是使用字符串“${header.testHeader}”运行

我有一条路线如下所示:

from("direct:start") .to("exec:bash?args=testScript.sh")
.log("Process done.");
这条路走得很好。但是现在我需要用一个参数调用这个脚本,这个参数是一个呼气头

所以,我试着:

.to("exec:bash?args=testScript.sh ${header.testHeader}")
但是,它不是使用头的实际值(整数)运行脚本,而是使用字符串“${header.testHeader}”运行脚本

在我的脚本中,我正在构建一个目录。Im传入的标头值使目录如下所示:

testDirectory/${header.testHeader}
而不是:

testDirectory/882
我知道标题值设置正确,因为如果我这样做:

.log( "${header.testHeader}")
我得到了我希望看到的标题的值(即882)

有人知道如何使用shell脚本调用exec并使用实际的头值吗

谢谢

问题在于to()端点不是动态的。i、 e.不会对每个新的exchange进行评估,只是在启动时评估一次。Camel 2.16.0引入了动态端点。或者,如果您使用的是早期版本,则可以使用动态评估的版本。在java DSL中,可能是这样的:-

from("direct:start").recipientList().simple("exec:bash?args=testScript.sh ${header.testHeader}");

非常感谢你!我不知道,我不知道。我正在使用Camel 2.15.5(以防其他人遇到此问题),第二个解决方案使用recipientList()。。。工作得很有魅力。