Quand je fais un "os.execute" dans Lua, une console apparaît rapidement, exécute la commande, puis se ferme. Mais existe-t-il un moyen de récupérer la sortie de la console en utilisant uniquement les bibliothèques Lua standard?Récupère la sortie de os.execute dans Lua
Répondre
Je pense que vous voulez ce http://pgl.yoyo.org/luai/i/io.popen io.popen. Mais ce n'est pas toujours compilé dans
Je ne sais pas Lua spécifiquement, mais vous pouvez généralement exécuter une commande comme:
comd >comd.txt 2>&1
pour capturer la sortie et l'erreur dans le fichier comd.txt, puis utiliser le fichier des langues fonctions E/S pour le lire.
C'est comme ça que je le ferais si le langage lui-même ne permettait pas de capturer la sortie standard et l'erreur.
Ceci est spécifique à Windows mais est une méthode qui a résolu pour moi. Un exemple de chaîne de commande entière passée à exécuter est "cmd.exe/c c: \ pathtoit \ certainprogram.exe -arg1 quelfichier> c: \ temp \ out.txt 2> & 1". La partie 2> était l'astuce pour moi. – jdr5ca
Ce n'est pas spécifique à Windows. Il fonctionnera également sous Unix, Linux, BSD, OS X et beaucoup d'autres systèmes. Je ne suis pas le plus grand fan de fichiers temporaires frivoles, donc je n'aime pas cette approche, même si cela fonctionne techniquement. La partie '2> & 1' redirige l'erreur standard (sortie 2) vers la sortie standard (sortie 1), qui était déjà redirigée vers comd.txt ('> 'est un raccourci pour' 1> ') –
Si vous avez io.popen, alors ce que je l'utilise.
function os.capture(cmd, raw) local f = assert(io.popen(cmd, 'r')) local s = assert(f:read('*a')) f:close() if raw then return s end s = string.gsub(s, '^%s+', '') s = string.gsub(s, '%s+$', '') s = string.gsub(s, '[\n\r]+', ' ') return s end
Si vous ne l'avez pas io.popen, puis popen probablement (3) ne disponible sur votre système, et vous êtes dans un yaourt profond. Mais tous les ports Lua d'unix/mac/windows auront io.popen.
Avez-vous un exemple de comment utiliser le ci-dessus? – starbeamrainbowlabs
Je l'ai utilisé pour obtenir le pourcentage d'énergie restante pour certains logiciels propriétaires de l'onduleur 'local curPercent = os.capture (" sudo pwrstat -status | grep 'Capacité de la batterie' | cut -d '' -f 3 ", false) - assurez-vous que vous avez la règle dans/etc/sudoers pour exécuter ce pwrstat sans mot de passe (NOPASSWD) ' J'ai la deuxième option de la fonction os.capture ci-dessus définie sur' false' afin qu'elle efface la nouvelle ligne normalement obtenir. – Logg
- 1. Concaténation de chaînes dans Lua
- 2. Entrée asynchrone dans Lua
- 3. La valeur de Lua ne change pas?
- 4. Constructeur de tables lua
- 5. Génération sécurisée XML dans Lua
- 6. Lua - Erreur de syntaxe dans if-instruction
- 7. Sortie xUnit.net localisée dans la fenêtre de sortie Visual Studio
- 8. comment obtenir la fermeture à lua?
- 9. Récupère la valeur d'argument de TextTransform.exe dans le modèle
- 10. Récupère la valeur de fonction d'une méthode d'instance dans Scala
- 11. Récupère le nom de la propriété dans le setter
- 12. Récupère la requête SQL d'origine de l'instruction préparée dans SQLite
- 13. Récupère le contenu du tampon de la console dans C
- 14. Closures Lua dans la mise en œuvre d'un DSL
- 15. Lua: utiliser la table comme arguments
- 16. récupère la valeur de la cellule de ligne de table
- 17. Incorporation: mono vs lua
- 18. Débogage intégré Lua
- 19. Lua scripting implementation
- 20. Lua et C-struct
- 21. Comment créer une table Lua en C++ et la passer à une fonction Lua?
- 22. Désactiver la sortie dans Rails
- 23. Obtenir des entrées avec IUP dans Lua
- 24. Largeur de la sortie PowerShell dans la fenêtre de sortie de Visual Studio
- 25. Sortie de la méthode d'extension dans Container.DataItem?
- 26. Obtenir la sortie de vue dans Oracle
- 27. Sortie de la tâche java dans Ant
- 28. Ne fichier qu'une seule fois dans Lua
- 29. Correction d'un code XML incorrect dans Lua
- 30. Lua COM Programmation
merci de demander cela, se demandait la même chose aujourd'hui –