Content deleted Content added
→Racket: Better coding practice |
m remove extraneous characters from perl code sample |
||
(47 intermediate revisions by 27 users not shown) | |||
Line 1:
{{short description|Programming languages parsing of command-line arguments}}
Different '''command-line argument parsing''' methods are used by different [[programming languages]] to [[parse]] [[command-line argument]]s.
==Programming languages==
===C===
{{Main|C_syntax#Command-line_arguments}}
C uses <code>argv</code> to process command-line arguments.<ref>{{cite web|url=http://publications.gbdirect.co.uk/c_book/chapter10/arguments_to_main.html |title=The C Book — Arguments to main |publisher=Publications.gbdirect.co.uk |date= |accessdate=2010-05-31}}</ref><ref>[http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/share/misc/style An example of parsing C arguments and options]</ref>
An example of [[C (programming language)|C]] argument parsing would be:
<syntaxhighlight lang="c">
#include <stdio.h>
int main (int argc, char *argv[])
{
int count;
for (count = 0; count < argc; count++)
puts (argv[count]);
}
</syntaxhighlight>
C also has functions called [[getopt]] and getopt_long.
===C#===
An example of [[C Sharp (programming language)|C#]] argument parsing would be:
<syntaxhighlight lang="csharp">
class Program
{
static void Main(string[] args)
{
foreach (var arg in args)
Console.WriteLine(arg);
}
}
</syntaxhighlight>
===Java===
An example of [[Java (programming language)|Java]] argument parsing would be:
<
public class Echo {
public static void main (String[] args) {
Line 16 ⟶ 42:
}
}
</syntaxhighlight>
===Kotlin===
Here are some possible ways to print arguments in [[Kotlin (programming language)|Kotlin]]:<ref>{{cite web|url=https://kotlinlang.org/docs/basic-syntax.html#program-entry-point |title=Kotlin: Basic syntax |date= |accessdate=2022-05-13}}</ref>
<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) = println(args.joinToString())
</syntaxhighlight>
<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) = println(args.contentToString())
</syntaxhighlight>
<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
for (arg in args)
println(arg)
}
</syntaxhighlight>
===Perl===
[[Perl]] uses <code>
<syntaxhighlight lang="perl">
foreach $arg (@ARGV)
{
print $arg;
}
</syntaxhighlight>
or
<syntaxhighlight lang="perl">
foreach $argnum (0 .. $#ARGV)
{
print $ARGV[$argnum];
}
</syntaxhighlight>
===AWK===
[[AWK]] uses <code>ARGV</code> also.
<syntaxhighlight lang="awk">
BEGIN {
for ( i = 0; i < ARGC; i++ )
{
print ARGV[i]
}
}
</syntaxhighlight>
===PHP===
[[PHP]] uses <code>argc</code> as a count of arguments and <code>argv</code> as an [[array
<
$args = parseArgs(
echo getArg(
function parseArgs(array $args
{ }
}
}
function getArg(array $args, string $arg
{ }
}
</syntaxhighlight>
PHP can also use <code>getopt()</code>.<ref>
===Python===
[[Python (programming language)|Python]] uses <code>sys.argv</code>, e.g.:
<
import sys
for arg in sys.argv:
print arg
</syntaxhighlight>
Python also has a module called <code>argparse</code> in the standard library for parsing command-line arguments.<ref>{{cite web|title=argparse — Parser for command-line options, arguments and sub-commands|url=
===Racket===
[[Racket (programming language)|Racket]] uses a <code>current-command-line-arguments</code> parameter, and provides a <code>racket/cmdline</code><ref>[http://docs.racket-lang.org/reference/Command-Line_Parsing.html The Racket reference manual, Command-Line Parsing]</ref> library for parsing these arguments. Example:
<
#lang racket
Line 83 ⟶ 155:
(if (nose?) "-" "")
(if (smile?) ")" "("))
</syntaxhighlight>
The library parses long and short flags, handles arguments, allows combining short flags, and handles <code>-h</code> and <code>--help</code> automatically:
<syntaxhighlight lang="console">
$ racket /tmp/c -nfe 8
8-(
</syntaxhighlight>
===Rexx===
[[Rexx]] uses <code>arg</code>, e.g.:
<syntaxhighlight lang="rexx">
do i=1 to words(arg(1))
say word(arg(1), i)
end
</syntaxhighlight>
===Rust===
The args are in <code>env::args()</code>.<ref>{{cite web |title=Accepting Command Line Arguments - The Rust Programming Language |url=https://doc.rust-lang.org/book/ch12-01-accepting-command-line-arguments.html |website=doc.rust-lang.org |access-date=22 December 2022}}</ref>
<syntaxhighlight lang="rust">
use std::env;
fn main() {
let args: Vec<String> = env::args().collect();
let query = &args[1];
let file_path = &args[2];
println!("Searching for {}", query);
println!("In file {}", file_path);
}
</syntaxhighlight>
===JavaScript===
====Node.js====
[[JavaScript]] programs written for [[Node.js]] use the <code>process.argv</code> global variable.<ref>{{cite web|title=process.argv|work=Node.js v10.16.3 Documentation|url=https://nodejs.org/docs/latest-v10.x/api/process.html#process_process_argv|accessdate=3 October 2019}}</ref>
<syntaxhighlight lang="javascript">
// argv.js
console.log(process.argv);
</syntaxhighlight>
<syntaxhighlight lang="bash">
$ node argv.js one two three four five
[ 'node',
'/home/avian/argvdemo/argv.js',
'one',
'two',
'three',
'four',
'five' ]
</syntaxhighlight>
[[Node.js]] programs are invoked by running the interpreter node interpreter with a given file, so the first two arguments will be <code>node</code> and the name of the JavaScript source file. It is often useful to extract the rest of the arguments by slicing a sub-array from <code>process.argv</code>.<ref>{{cite web|title=How to parse command line arguments|work=Node.js Foundation Documentation|accessdate=3 October 2019|url=https://nodejs.org/en/knowledge/command-line/how-to-parse-command-line-arguments/}}</ref>
<syntaxhighlight lang="javascript">
// process-args.js
console.log(process.argv.slice(2));
</syntaxhighlight>
<syntaxhighlight lang="bash">
$ node process-args.js one two=three four
[
'one',
'two=three',
'four' ]
</syntaxhighlight>
====Bun====
JavaScript written for [[Bun (software)|Bun]] use <code>Bun.argv</code> and the <code>util.parseArgs</code> function.<ref>{{cite web |title=Parse command-line arguments {{!}} Bun Examples |url=https://bun.sh/guides/process/argv |website=Bun |language=en}}</ref>
<syntaxhighlight lang="javascript">
console.log(Bun.argv);
</syntaxhighlight>
====Deno====
JavaScript written for [[Deno (software)|Deno]] use <code>Deno.args</code><ref>{{cite web |title=Deno.args |url=https://docs.deno.com/api/deno/~/Deno.args |website=docs.deno.com}}</ref> and the <code>parseArgs</code> function.<ref>{{cite web |title=parseArgs from parse-args - @std/cli - JSR |url=https://jsr.io/@std/cli/doc/parse-args/~/parseArgs |website=jsr.io |language=en}}</ref>
<syntaxhighlight lang="javascript">
console.log(Deno.args);
</syntaxhighlight>
==References==
Line 96 ⟶ 241:
[[Category:Articles with example Java code]]
[[Category:Articles with example PHP code]]
[[Category:Articles with example Python (programming language) code]]
[[Category:Articles with example Racket code]]
|