Maison > développement back-end > Golang > Pourquoi « mv » avec des caractères génériques se comporte-t-il différemment dans Go et Bash ?

Pourquoi « mv » avec des caractères génériques se comporte-t-il différemment dans Go et Bash ?

Patricia Arquette
Libérer: 2024-12-10 18:48:11
original
884 Les gens l'ont consulté

Why Does `mv` with Wildcards Behave Differently in Go and Bash?

Exécuter les commandes mv différemment dans Go et Bash

Dans Go, l'utilisation du package exec pour exécuter la commande mv peut entraîner des problèmes lors de l'utilisation des caractères génériques comme "*" dans les arguments de la commande. Bien que la commande fonctionne comme prévu dans le terminal, le caractère générique astérisque ne semble pas fonctionner dans le script Go.

La raison de cet écart réside dans la façon dont le shell et Go gèrent les arguments de la commande. Dans le terminal, le shell interprète le caractère générique et le remplace par une liste de noms de fichiers correspondants. Cependant, dans Go, la commande est transmise sous forme de chaîne et considère le caractère générique littéralement comme faisant partie de l'argument.

Pour contourner ce problème, vous avez deux options :

Développez manuellement les caractères génériques

Vous pouvez utiliser la fonction filepath.Glob de Go pour récupérer une liste de fichiers qui correspondent au modèle de caractère générique, puis transmettre les noms de fichiers individuels comme arguments pour exec.Command. Par exemple :

files, err := filepath.Glob("./source-dir/*")
if err != nil {
    // Error handling
}

cmd := exec.Command("mv", files, "./dest-dir")
Copier après la connexion

Utiliser l'invocation du shell

Vous pouvez appeler le shell lui-même pour exécuter la commande mv avec les caractères génériques. Le shell interprétera les caractères génériques et transmettra les arguments développés à la commande mv. Par exemple :

cmd := exec.Command("/bin/sh", "-c", "mv ./source-dir/* ./dest-dir")
Copier après la connexion

En utilisant l'une de ces approches, vous pouvez vous assurer que les caractères génériques sont gérés correctement dans vos scripts Go, vous permettant ainsi d'exécuter les commandes mv comme prévu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal