我正在尝试以编程方式从我的java程序中调用一个shell脚本,该脚本依次根据发送的参数执行命令。
要在connectvpn.sh shell脚本中执行的命令是:
<service id="test" class="MyClass">
<argument type="expression">service(parameter('my.vendor'))</argument>
</service>
或
echo myrootpassword | sudo -S /usr/local/Cellar/openvpn/2.3.8/sbin/openvpn --config /usr/local/etc/openvpn/1.opvn
从长列表等等,其中我希望变量的文件名号可以根据接收到的参数的值而变化
所以我希望我的java程序能够始终使用相同的shell脚本,但根据发送的参数使用不同的.ovpn文件。
我相信在我的java程序中我必须称之为:
echo myrootpassword | sudo -S /usr/local/Cellar/openvpn/2.3.8/sbin/openvpn --config /usr/local/etc/openvpn/2.opvn
shell脚本中的内容是什么,以便调用的文件名是可变的,对于显示的示例,它使用1,但有时它使用作为参数发送的任何数字?
非常感谢!
答案 0 :(得分:0)
在shell脚本中,使用$1
表示传递给它的第一个参数。
修复你的java,如下所示
ProcessBuilder pb = new ProcessBuilder("./connectvpn.sh", String.valueOf(server_number));