Jump to content

Анализ аргументов командной строки

(Перенаправлено из анализа аргументов )

разные аргументов командной строки используются В разных языках программирования для анализа методы анализа аргументов командной строки .

Языки программирования

[ редактировать ]

C использует argv для обработки аргументов командной строки. [ 1 ] [ 2 ]

Примером анализа аргументов C может быть:

#include <stdio.h>
int main (int argc, char *argv[])
{
    int count;
    for (count = 0; count < argc; count++)
        puts (argv[count]);
}

В C также есть функции getopt и getopt_long.

Примером анализа аргументов C# может быть:

class Program
{
    static void Main(string[] args)
    {
        foreach (var arg in args)
            Console.WriteLine(arg);
    }
}

Примером анализа аргументов Java может быть:

public class Echo {
    public static void main (String[] args) {
        for (String s: args) {
            System.out.println(s);
        }
    }
}

Вот несколько возможных способов печати аргументов в Kotlin : [ 3 ]

fun main(args: Array<String>) = println(args.joinToString())
fun main(args: Array<String>) = println(args.contentToString())
fun main(args: Array<String>) {
    for (arg in args)
        println(arg)
}

Perl использует @ARGV.

foreach $arg (@ARGV)GT
{
    print $arg;
}

ФТ

или

foreach $argnum (0 .. $#ARGV)ST
{
    print $ARGV[$argnum];
}

АВК использует ARGV также.

BEGIN {
   for ( i = 0; i < ARGC; i++ )
   {
       print ARGV[i]
   }
}

PHP использует argc как количество аргументов и argv как массив, содержащий значения аргументов. [ 4 ] [ 5 ] Чтобы создать массив из аргументов командной строки в -foo:bar формате можно использовать следующее:

$args = parseArgs($argv);
echo getArg($args, "foo");

function parseArgs(array $args)
{
    foreach ($args as $arg) {
        $tmp = explode(":", $arg, 2);
        if ($arg[0] === "-") {
            $args[substr($tmp[0], 1)] = $tmp[1];
        }
    }
    return $args;
}

function getArg(array $args, string $arg)
{
    if (isset($args[$arg])) {
        return $args[$arg];
    }
    return false;
}

PHP также может использовать getopt(). [ 6 ]

Python использует sys.argv, например:

import sys
for arg in sys.argv:
    print arg

В Python также есть модуль под названием argparse в стандартной библиотеке для анализа аргументов командной строки. [ 7 ]

Ракетка использует current-command-line-arguments параметр и обеспечивает racket/cmdline[ 8 ] библиотека для анализа этих аргументов. Пример:

#lang racket

(require racket/cmdline)

(define smile? (make-parameter #t))
(define nose?  (make-parameter #false))
(define eyes   (make-parameter ":"))

(command-line #:program "emoticon"

              #:once-any ; the following two are mutually exclusive
              [("-s" "--smile") "smile mode" (smile? #true)]
              [("-f" "--frown") "frown mode" (smile? #false)]

              #:once-each
              [("-n" "--nose") "add a nose"  (nose? #true)]
              [("-e" "--eyes") char "use <char> for the eyes" (eyes char)])

(printf "~a~a~a\n"
        (eyes)
        (if (nose?) "-" "")
        (if (smile?) ")" "("))

Библиотека анализирует длинные и короткие флаги, обрабатывает аргументы, позволяет комбинировать короткие флаги и обрабатывает -h и --help автоматически:

$ racket /tmp/c -nfe 8
8-(

Рекс использует arg, например:

do i=1 to words(arg(1))
	say word(arg(1), i)
end

Ржавчина

[ редактировать ]

Аргументы находятся в env::args(). [ 9 ]

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);
}

Программы JavaScript , написанные для Node.js, используют process.argv глобальная переменная. [ 10 ]

// argv.js
console.log(process.argv);
$ node argv.js one two three four five
[ 'node',
  '/home/avian/argvdemo/argv.js',
  'one',
  'two',
  'three',
  'four',
  'five' ]

Программы Node.js вызываются путем запуска интерпретатора узла с заданным файлом, поэтому первые два аргумента будут node и имя исходного файла JavaScript. Часто бывает полезно извлечь остальные аргументы, вырезав подмассив из process.argv. [ 11 ]

// process-args.js
console.log(process.argv.slice(2));
$ node process-args.js one two=three four
[ 
  'one',
  'two=three',
  'four' ]

JavaScript написан для Bun использования Bun.argv и util.parseArgs функция. [ 12 ]

console.log(Bun.argv);

JavaScript написан для использования [[Deno (программное обеспечение)|Deno] Deno.args[ 13 ] и parseArgs функция. [ 14 ]

console.log(Deno.args);
  1. ^ «Книга C — Аргументы для main» . Публикации.gbdirect.co.uk . Проверено 31 мая 2010 г.
  2. ^ Пример анализа аргументов и опций C.
  3. ^ «Котлин: базовый синтаксис» . Проверено 13 мая 2022 г.
  4. ^ «Руководство по PHP» . PHP . Проверено 31 мая 2010 г.
  5. ^ wikibooks: Программирование PHP/CLI
  6. ^ «PHP: Getopt — Руководство» .
  7. ^ «argparse — анализатор параметров командной строки, аргументов и подкоманд» . Документация Python v3.10.0 . Архивировано из оригинала 1 ноября 2012 г. Проверено 15 октября 2021 г.
  8. ^ Справочное руководство Racket, Анализ командной строки.
  9. ^ «Принятие аргументов командной строки — язык программирования Rust» . doc.rust-lang.org . Проверено 22 декабря 2022 г.
  10. ^ "процесс.аргв" . Документация Node.js v10.16.3 . Проверено 3 октября 2019 г.
  11. ^ «Как анализировать аргументы командной строки» . Документация Node.js Foundation . Проверено 3 октября 2019 г.
  12. ^ «Разбор аргументов командной строки | Примеры булочек» . Булочка .
  13. ^ "Дено.аргс" . docs.deno.com .
  14. ^ «parseArgs из parse-args — @std/cli — JSR» . jsr.io.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 9b502a1976039878279c8082b888b405__1722360240
URL1:https://arc.ask3.ru/arc/aa/9b/05/9b502a1976039878279c8082b888b405.html
Заголовок, (Title) документа по адресу, URL1:
Command-line argument parsing - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)