Analyser les arguments avec Lua | Opensource.com


  • Français


  • La plupart des commandes informatiques se composent de deux parties : la commande et les arguments. La commande est le programme destiné à être exécuté, tandis que les arguments peuvent être des options de commande ou une entrée utilisateur. Sans cette structure, un utilisateur devrait modifier le code de la commande uniquement pour modifier les données traitées par la commande. Imaginez réécrire la commande printf juste pour que votre ordinateur vous accueille avec un message “hello world”. Les arguments sont essentiels à l’informatique interactive, et le langage de programmation Lua fournit la {…​} expression pour encapsuler les varargs donnés au moment du lancement d’un script Lua.

    Utiliser des arguments en Lua

    Presque chaque commande donnée à un ordinateur suppose un argument, même s’il s’attend à ce que l’argument soit une liste vide. Lua enregistre ce qui est écrit après son lancement, même si vous ne faites rien avec ces arguments. Pour utiliser les arguments fournis par l’utilisateur au démarrage de Lua, parcourez le {…​} table:

    local args = {...}

    for i,v in ipairs(args) do
        print(v)
    end

    Exécutez le code :

    $ lua ./myargs.lua
    $ lua ./myargs.lua foo --bar baz
    foo
    --bar
    baz
    ----

    N’avoir aucun argument est sûr, et Lua imprime tous les arguments exactement tels qu’ils ont été saisis.

    Analyser les arguments

    Pour les commandes simples, les facultés de base de Lua sont suffisantes pour analyser et traiter les arguments. Voici un exemple simple :

    -- setup

    local args = {...}

    -- engine

    function echo(p)
       print(p)
    end

    -- go

    for i,v in ipairs(args) do
      print(i .. ": " .. v)
    end

    for i,v in ipairs(args) do
      if args[i] == "--say" then
        echo("echo: " .. args[i+1])
      end
    end

    Programmation et développement

    Dans le setup section, vider tous les arguments de commande dans une variable appelée args.

    Dans le engine section, créez une fonction appelée echo qui imprime tout ce que vous y “alimentez”.

    Enfin, dans le go section, analysez l’index et les valeurs dans la args variable (les arguments fournis par l’utilisateur au lancement). Dans cet exemple de code, le premier for loop imprime simplement chaque index et valeur pour plus de clarté.

    La deuxième for loop utilise l’index pour examiner le premier argument, qui est supposé être une option. La seule option valide dans cet exemple de code est --say. Si la boucle trouve la chaîne --sayil appelle le echo fonction, et l’index de l’argument courant plus 1 (la Suivant argument) est fourni comme paramètre de la fonction.

    Le délimiteur des arguments de commande est un ou plusieurs espaces vides. Exécutez le code pour voir le résultat :

    $ lua ./echo.lua --say zombie apocalypse
    1: --say
    2: zombie
    3: apocalypse
    echo: zombie

    La plupart des utilisateurs apprennent que les espaces sont importants lorsqu’ils donnent des commandes à un ordinateur, donc la suppression du troisième argument, dans ce cas, est un comportement attendu. Voici une variante pour démontrer deux méthodes “d’échappement” valides :

    $ lua ./echo.lua --say "zombie apocalypse"
    1: --say
    2: zombie apocalypse
    echo: zombie apocalypse

    $ lua ./echo.lua --say zombie\ apocalypse
    1: --say
    2: zombie apocalypse
    echo: zombie apocalypse

    Analyser les arguments

    L’analyse manuelle des arguments est simple et sans dépendance. Cependant, il y a des détails que vous devez considérer. La plupart des commandes modernes permettent des options courtes (par exemple, -f) et les options longues (--foo), et la plupart offrent un menu d’aide avec -h ou --help ou lorsqu’un argument requis n’est pas fourni.

    L’utilisation de LuaRocks facilite l’installation de bibliothèques supplémentaires. Il y en a de très bons, comme alt-getopt, qui fournissent une infrastructure supplémentaire pour l’analyse des arguments.

    Source

    Houssen Moshinaly

    Pour contacter personnellement le taulier :

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

    Copy code