Parsning av kommandoradsargument
Olika metoder för parsning av kommandoradsargument används av olika programmeringsspråk för att analysera kommandoradsargument .
Programmeringsspråk
C
C använder argv
för att bearbeta kommandoradsargument.
Ett exempel på C- argumentanalys skulle vara:
0
#include <stdio.h> int main ( int argc , char * argv []) { int count ; for ( count = ; count < argc ; count ++ ) sätter ( argv [ count ]); }
C har också funktioner som kallas getopt och getopt_long.
C#
class TestClass { static void Main ( string [] args ) { // Visa antalet kommandoradsargument. Konsol . WriteLine ( args . Length ); } }
Java
Ett exempel på Java- argumentanalys skulle vara:
public class Echo { public static void main ( String [ ] args ) { for ( String s : args ) { System . ut . println ( s ); } } }
Kotlin
Här är några möjliga sätt att skriva ut argument i Kotlin :
fun main ( args : Array < String > ) = println ( args . joinToString ())
fun main ( args : Array < String > ) = println ( args . contentToString ())
fun main ( args : Array < String > ) { for ( arg i args ) println ( arg ) }
Perl
Perl använder @ARGV
.
foreach $arg ( @ARGV ) GT { print $arg ; }
MED
eller
0
foreach $argnum ( .. $#ARGV ) ST { print $ARGV [ $argnum ]; }
AWK
AWK använder också ARGV .
0
BEGIN { for ( i = ; i < ARGC ; i ++ ) { print ARGV [ i ] } }
PHP
PHP använder argc
som en räkning av argument och argv
som en array som innehåller värdena för argumenten. För att skapa en array från kommandoradsargument i -foo:bar
kan följande användas:
0
0
$args = parseArgs ( $argv ); echo getArg ( $args , 'foo' ); function parseArgs ( array $args ) { foreach ( $args as $arg ) { $tmp = explode ( ':' , $arg , 2 ); if ( $arg [ ] === '-' ) { $args [ substr ( $tmp [ ], 1 )] = $tmp [ 1 ]; } } returnera $args ; } funktion getArg ( array $args , sträng $arg ) { if ( isset ( $args [ $arg ])) { return $args [ $arg ]; } returnera falskt ; }
PHP kan också använda getopt()
.
Pytonorm
Python använder sys.argv
, t.ex.:
importera sys för arg i sys . argv : skriv ut arg
Python har också en modul som heter argparse
i standardbiblioteket för att analysera kommandoradsargument.
Racket
Racket använder parametern current-command-line-arguments
och tillhandahåller ett racket/cmdline-
bibliotek för att analysera dessa argument. Exempel:
#lang racket ( kräver racket/cmdline ) ( definiera smile? ( make-parameter #t )) ( definiera näsa? ( make-parameter #false )) ( definiera ögon ( make-parameter ":" )) ( kommandorad # :program "emoticon" #:once-any ; följande två är ömsesidigt uteslutande [( "-s" "--smile" ) "smile mode" ( smile? #true )] [( "-f" "--frown " ) "rynka pannan" ( le? #false )] #:en gång varje [( "-n" "--näsa" ) "lägg till en näsa" ( näsa? #true )] [( "-e" "- -ögon" ) char "använd <char> för ögonen" ( ögon char )]) ( printf "~a~a~a \n " ( ögon ) ( if ( näsa? ) "-" "" ) ( if ( le? ) ")" "(" ))
Biblioteket analyserar långa och korta flaggor, hanterar argument, tillåter att korta flaggor kombineras och hanterar -h
och --help
automatiskt:
$ racket /tmp/c -nfe 8 8-(
Rexx
Rexx använder arg
, t.ex.:
gör i = 1 till ord ( arg ( 1 )) säg ord ( arg ( 1 ), i ) slut
Rost
Argarna finns i env::args()
.
använd std :: env ; fn main () { let args : Vec < String > = env :: args (). samla (); let query = & args [ 1 ]; let file_path = & args [ 2 ]; println! ( "Söker efter {}" , fråga ); println! ( "I fil {}" , filsökväg ); }
Node.js
JavaScript- program skrivna för Node.js använder den globala variabeln process.argv .
// argv.js konsol . log ( process . argv );
$ node argv.js en två tre fyra fem [ 'nod' , '/home/avian/argvdemo/argv.js' , 'en' , 'två' , 'tre' , 'fyra' , 'fem' ]
Node.js -program anropas genom att köra tolknodtolken med en given fil, så de två första argumenten kommer att vara nod
och namnet på JavaScript-källfilen. Det är ofta användbart att extrahera resten av argumenten genom att dela upp en sub-array från process.argv
.
// process-args.js konsol . log ( process . argv . skiva ( 2 ));
$ node process-args.js en två = tre fyra [ 'en' , 'två=tre' , 'fyra' ]