Résoudre le problème Bash Bad Substitution

Résoudre le problème Bash Bad Substitution
Vous avez peut-être reçu le problème de la mauvaise syntaxe de substitution tout en développant des scripts bash. Après avoir parcouru les forums, vous découvrirez peut-être que vous n'êtes pas seul; D'autres individus rencontrent la même erreur. C'est une faute typographique qui se produit lorsque vous exécutez votre script de shell, et cela peut arriver pour diverses raisons. La mauvaise utilisation de la substitution des instructions et des caractères erronés annexés au programme sont deux raisons principales à cela.

Voyons comment nous pouvons faire notre script shell provoquer cette erreur et comment le résoudre. Commencez avec le nouveau fichier bash créé avec la requête «Touch» d'Ubuntu et ouvrez-la dans l'éditeur «GNU Nano».

$ tactile sub.shot
$ nano sub.shot

Exemple 01

La première raison de la mauvaise erreur de substitution est l'utilisation de la mauvaise syntaxe de code. Jetons un coup d'œil à ça. À partir du premier code bash, nous avons ajouté une prise en charge de bash dans la première ligne du script bash, je.e., "#!/ bac / bash ». Après cela, nous avons initialisé une variable simple «V» avec la commande de liste d'Ubuntu comme valeur. Cette valeur a été insérée dans les supports bouclés et avec le signe «$» pour le considérer comme une commande shell. Après cela, l'instruction ECHO est là pour afficher simplement la valeur de la variable «V» sur le shell. Notre code est complet et prêt à l'emploi.

Nous avons enregistré le code bash et sommes revenus au terminal après avoir utilisé Ctrl + S et Ctrl + X, respectivement. Nous avons exécuté ce fichier de script Bash nouvellement créé avec l'instruction «bash» et avons obtenu la «mauvaise substitution» ici sur notre écran. Cette erreur s'est produite en raison de l'utilisation de supports bouclés «» autour de l'instruction de la liste dans le code.

$ bash sub.shot

Essayons de mettre à jour notre code pour résoudre cette erreur maintenant. Nous avons donc supprimé les supports bouclés de la deuxième ligne de code et l'avons remplacée par les supports simples «()» comme présenté ci-dessous. Dans l'ensemble, le code restera le même qu'il n'y a aucun problème avec le code. Enregistrez ce code maintenant.

Après avoir quitté l'éditeur GNU Nano, nous exécuterons le fichier bash «Sub.SH ”Code mis à jour avec l'utilisation de l'instruction« bash »comme présenté ci-dessous. Il s'avère que la mauvaise erreur de substitution a été supprimée après la mise à jour du code, et l'instruction de liste insérée dans la variable «V» a été exécutée avec succès. La commande list affiche tous les contenus actuels du répertoire domestique, i.e., Fichiers et dossiers, sur notre écran shell.

$ bash sub.shot

Exemple 02

Une autre raison de la survenue de mauvaises erreurs de substitution dans Bash est l'utilisation d'espaces inutiles lors de l'exécution de certaines variables. Ainsi, nous avons ajouté un support bash et initialisé une variable «V» avec l'instruction de liste comme une valeur détenue par des supports simples et un signe en dollars «$."Après cela, nous avons utilisé l'instruction" Echo "pour afficher la valeur« V »variable. Mais nous avons ajouté la variable «V» dans la déclaration «Echo» ainsi que «l'espace» entre les crochets.

Après avoir enregistré ce code, nous avons exécuté ce fichier bash avec la requête «bash» dans notre terminal, comme présenté ci-dessous. Il renvoie la substitution bash au 3rd ligne du script.

$ bash sub.shot

Pour supprimer l'erreur de notre code, nous devons mettre à jour notre code. Ainsi, nous avons à nouveau ouvert le fichier et supprimé l'espace supplémentaire dans les supports bouclés de la déclaration «Echo» comme ci-dessous.

Maintenant que le code a été mis à jour et que l'espace blanc est supprimé, nous devons exécuter ce fichier avec les instructions de bash présentées ci-dessous. Après avoir exécuté le fichier, la mauvaise erreur de substitution a été supprimée et l'instruction de liste spécifiée dans la variable «V» a été exécutée avec succès sur le terminal après que l'instruction «Echo» a été exécutée dans le script bash. La liste des fichiers et dossiers du répertoire domestique actuels s'affiche sur l'écran de notre shell ci-dessous.

$ bash sub.shot

Exemple 03

Cette erreur peut également se produire en raison de l'utilisation de caractères indésirables répétés dans le code. Nous avons donc essayé un code mis à jour pour obtenir cette erreur sur le shell. Pour cela, nous devons utiliser deux fois le caractère «$» dans l'instruction «Echo» pour spécifier la variable «V» pour l'exécution qui est la mauvaise syntaxe pour le faire. Cette variable «V» contient l'instruction de liste simple comme sa valeur. Comme nous avons utilisé le double «$» la connexion et l'extérieur des supports bouclés dans la déclaration «Echo», cela nous mènera à une mauvaise erreur de substitution lors de l'exécution.

Après avoir exécuté le code avec des instructions de bash, nous avons rencontré une mauvaise erreur de substitution à la ligne 3 du script bash sur notre écran de shell.

$ bash sub.shot

Supprimons la mauvaise erreur de substitution de l'exécution en mettant à jour la ligne 3 d'un code. Nous avons supprimé le signe intérieur «$» entre les supports bouclés de la déclaration «Echo».

Après avoir retiré le signe «$», nous avons à nouveau exécuté le code sur le shell avec la commande «bash». L'erreur a été supprimée et la liste des fichiers et dossiers a été affichée.

$ bash sub.shot

Exemple 04

Ayons notre dernier mais non le moindre exemple de cet article. Nous avons utilisé deux variables, X et Y, contenant l'emplacement du répertoire comme valeur. Dans l'instruction «Echo» de ce code, nous avons utilisé les deux variables à imprimer et séparées par le signe «/». Chaque variable contient un signe en dollars avec, tandis qu'un seul signe d'un dollar est également utilisé à l'extérieur des supports bouclés.

L'utilisation de supports bouclés et de panneaux en dollars a provoqué une mauvaise erreur de substitution.

$ bash sub.shot

Ainsi, nous avons supprimé les supports bouclés et le signe du dollar extérieur, comme indiqué ci-dessous.

Cette valeur de temps des deux variables a été affichée.

$ bash sub.shot

Conclusion

Il s'agit de l'illustration de la création d'un code bash aux erreurs provoquant une mauvaise erreur de substitution pendant l'exécution. Nous avons discuté des DO et pour éviter l'erreur en effectuant différents exemples de bash.