我想为我的java代码构建一个rerun.sh脚本。但是我的java代码需要5个参数。我想构建一个可以调用我的java类的重新运行,如:
java cp myjar.jar javaClassName <arg0> <arg1> <arg2> <arg3> <arg4>
所以当我运行我的rerun.sh时,我只需要输入:
./rerun <arg0> <arg1> <arg2> <arg3> <arg4>
有什么建议吗?
由于
答案 0 :(得分:2)
一个非常简单的脚本,带有基本错误检查
#! /bin/bash
if [ $# -ne 5 ]; then
echo "usage $0: <arg1> <arg2> <arg3> <arg4> <arg5>"
exit 1
fi
java -cp myjar.jar javaClassName $1 $2 $3 $4 $5
答案 1 :(得分:0)
为避免单词拆分和glob扩展,您需要在脚本中引用参数:
#!/bin/sh
if [ $# -eq 5 ]; then
command "$1" "$2" "$3" "$4" "$5"
fi
shell提供了一种代表你这样做的方法(使用它!):
#!/bin/sh
if [ $# -eq 5 ]; then
command "$@"
fi
为了说明为什么需要引用,让我们将command
定义为以下shell函数:
command() { echo $#; }
如果我们调用上面两个脚本中的任何一个,我们得到输出5
:
./script1 a b '*' c 'd e'
./script2 a b '*' c 'd e'
但是,如果我们没有使用引号,那么*
会扩展到当前目录中的所有文件(如果目录为空,则只展示*
)并且分词会表示将d
和e
视为脚本的单独参数。