假设您使用的是与Bourne外壳兼容的外壳;例如sh,bash,ksh等,以下包装器会将所有命令行参数传递给java命令:
#!/bin/shOPTS=... java $OPTS com.example.YourApp "$@"
在
$@周围引起的参数为shell脚本其余的参数,并把报价膨胀进行单独报价,这样下将传递一个参数到Java:
$ wrapper "/home/person/Stupid Directory Name/foo.txt"
"$@"在包装脚本中没有双引号的情况下,Java将收到上述三个参数。
请注意,这不适用于
"$*"。根据
bash手动输入:
"$*"等价于"$1c$2c...",其中c是IFS变量值的第一个字符。
换句话说,所有shell参数将被合并为Java应用程序的单个命令参数,而忽略原始单词边界。
有关外壳如何处理引用的更多信息,请参考
bash或
sh手册…或POSIX Shell规范…。



