我有一个ServiceMix 5.1.4实例(localhost),我想用提供的客户端(smx_home / bin / client)编写一些属性更改脚本。
如果我在smx控制台中手动测试我的命令(不使用client
)
config:edit org.myspace.test.mybundle
config:propset propertyOne false
config:propset propertyTwo true
config:update
......效果很好。
现在我想从bash执行这些命令,然后我写了一个简单的bash:
#!/bin/bash
smxcli='/opt/mysmxdir/bin/client'
$smxcli -h localhost -a 8101 -u smx -p smx config:edit org.myspace.test.mybundle
$smxcli -h localhost -a 8101 -u smx -p smx config:propset propertyOne false
$smxcli -h localhost -a 8101 -u smx -p smx config:propset propertyTwo true
$smxcli -h localhost -a 8101 -u smx -p smx config:update
或者如果我在命令行中尝试使用客户端本身,它会在第二行失败,因为它不会跟踪第一个edit
命令。
No configuration is being edited--run the edit command first
我试图像列表一样提供命令:
./client -h localhost -a 8101 -u smx -p smx "config:edit org.myspace.test.mybundle" "config:propset propertyOne true" "config:propset propertyTwo false" "config:update"
并使用选项-b(批处理)
./client -h localhost -a 8101 -u smx -p smx -b "config:edit org.myspace.test.mybundle" "config:propset propertyOne true" "config:propset propertyTwo false" "config:update"
但它不起作用。
我知道我可以使用选项-f(在一个文件中写入所有smx命令并使用client -f myfile.cmd
执行它们)但我想知道是否可以从没有额外文件的单个bash脚本中执行。
答案 0 :(得分:0)
实际上解决方案非常简单:就像在unix / linux中一样,你可以在同一个命令字符串中用分号;
分隔命令。
示例:的
./client -h localhost -a 8101 -u smx -p smx "config:edit org.myspace.test.mybundle; config:propset propertyOne true; config:propset propertyTwo false; config:update"
我发现也可以为多个捆绑包一次发送所有命令。如果我尝试发送两个不同的命令,为了更改两个不同的包的属性,第二个不起作用。
在这种情况下,解决方案是只用一个命令连接所有更改,如下所示:
./client -h localhost -a 8101 -u smx -p smx "config:edit org.myspace.test.bundle-1; config:propset propertyOne true; config:propset propertyTwo false; config:update; config:edit org.myspace.test.bundle-2; config:propset propertyX true; config:propset propertyY false; config:update"