Анализ аргументов командной строки
разные аргументов командной строки используются В разных языках программирования для анализа методы анализа аргументов командной строки .
Языки программирования
[ редактировать ]С
[ редактировать ]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
[ редактировать ]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
[ редактировать ]Программы 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);
Ссылки
[ редактировать ]- ^ «Книга C — Аргументы для main» . Публикации.gbdirect.co.uk . Проверено 31 мая 2010 г.
- ^ Пример анализа аргументов и опций C.
- ^ «Котлин: базовый синтаксис» . Проверено 13 мая 2022 г.
- ^ «Руководство по PHP» . PHP . Проверено 31 мая 2010 г.
- ^ wikibooks: Программирование PHP/CLI
- ^ «PHP: Getopt — Руководство» .
- ^ «argparse — анализатор параметров командной строки, аргументов и подкоманд» . Документация Python v3.10.0 . Архивировано из оригинала 1 ноября 2012 г. Проверено 15 октября 2021 г.
- ^ Справочное руководство Racket, Анализ командной строки.
- ^ «Принятие аргументов командной строки — язык программирования Rust» . doc.rust-lang.org . Проверено 22 декабря 2022 г.
- ^ "процесс.аргв" . Документация Node.js v10.16.3 . Проверено 3 октября 2019 г.
- ^ «Как анализировать аргументы командной строки» . Документация Node.js Foundation . Проверено 3 октября 2019 г.
- ^ «Разбор аргументов командной строки | Примеры булочек» . Булочка .
- ^ "Дено.аргс" . docs.deno.com .
- ^ «parseArgs из parse-args — @std/cli — JSR» . jsr.io.