14.11. Accessing Command-Line Arguments from a Script
Problem
You want to access the command-line arguments from your Scala shell script.
Solution
Use the same script syntax as shown in Recipe 14.8, and then access the command-line arguments
using args, which is a List[String] that is implicitly made
available:
#!/bin/shexecscala"$0""$@"!#args.foreach(println)
Save this code to a file named args.sh, make the file executable, and run it like this:
$ ./args.sh a b c
a
b
cDiscussion
Because the implicit field args
is a List[String], you can perform
all the usual operations on it, including getting its size, and
accessing elements with the usual syntax.
In a more “real-world” example, you’ll check for the number of command-line arguments, and then assign those arguments to values. This is demonstrated in the following script:
#!/bin/shexecscala"$0""$@"!#if(args.length!=2){Console.err.println("Usage: replacer <search> <replace>")System.exit(1)}valsearchPattern=args(0)valreplacePattern=args(1)println(s"Replacing $searchPattern with $replacePattern ...")// more code here ...
When this script is run from the command line without arguments, the result looks like this:
$ ./args.sh
Usage: replacer <search> <replace>When it’s run with the correct number of arguments, the result looks like this:
$ ./args.sh foo bar
Replacing foo with bar ...If you decide to use the App
trait in your script, make sure you pass the command-line arguments to
your App object, as shown in the
Hello.main(args) ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access