Command Line Arguments in Squirrel
Command-line arguments are a common way to parameterize execution of programs. For example, java MyProgram arg1 arg2
uses arg1
and arg2
as arguments to the MyProgram
class.
public class CommandLineArguments {
public static void main(String[] args) {
// args provides access to raw command-line arguments.
// Note that unlike in some other languages, args does not include the program name.
String[] argsWithoutProg = args;
// To simulate including the program name, we can create a new array
String[] argsWithProg = new String[args.length + 1];
argsWithProg[0] = "CommandLineArguments";
System.arraycopy(args, 0, argsWithProg, 1, args.length);
// You can get individual args with normal indexing.
String arg = args[2]; // Note: This will throw an exception if there are fewer than 3 arguments
System.out.println(java.util.Arrays.toString(argsWithProg));
System.out.println(java.util.Arrays.toString(argsWithoutProg));
System.out.println(arg);
}
}
To experiment with command-line arguments, it’s best to compile the Java file first.
$ javac CommandLineArguments.java
$ java CommandLineArguments a b c d
[CommandLineArguments, a, b, c, d]
[a, b, c, d]
c
In Java, the main
method’s args
parameter already excludes the program name, which is different from some other languages. We’ve added extra code to simulate including the program name for demonstration purposes.
Also, be careful when accessing arguments by index. If you try to access an argument that wasn’t provided, you’ll get an ArrayIndexOutOfBoundsException
. It’s often a good idea to check the length of the args
array before accessing its elements.
Next, we’ll look at more advanced command-line processing with flags, which in Java is typically done using libraries like Apache Commons CLI or JCommander.