Maison > php教程 > PHP开发 > Solution au problème de trop d'arguments dans Linux bash

Solution au problème de trop d'arguments dans Linux bash

高洛峰
Libérer: 2017-01-04 17:23:47
original
2070 Les gens l'ont consulté

Pour déterminer si le contenu d'un fichier est vide, utilisez l'instruction :

if test -z `cat filename`

Lorsque le nom de fichier est vide ou ne contient qu'une seule ligne de chaîne sans espaces , tout est normal, sinon des erreurs du type : trop d'arguments, ou encore : opérateur binaire attendu seront signalées.

Analyse des causes :
Les espaces et les retours chariot dans le nom de fichier confondent bash.
Si la variable d'environnement n'est pas placée entre guillemets, alors bash pense qu'il y a trop de variables indépendantes dans la condition.

Vous pouvez éliminer ce problème en mettant l'argument de chaîne entre guillemets doubles.

Il semble que prendre l’habitude de mettre tous les arguments de chaîne entre guillemets doubles éliminera de nombreuses erreurs de programmation similaires.

Solution :

Ajoutez simplement des guillemets doubles à la partie exécution de la commande :

if test -z "`cat filename`"
Copier après la connexion

Solution 2 pour le trop grand nombre d'arguments du shell :

Aujourd'hui, je j'ai parfois rencontré un problème étrange pour résoudre un petit problème. "[ ]" et "[[ ]] " ont des effets différents. Le résumé est le suivant

Afficher le code : Si [ -z ` lsof -i : 22 ` ] //Cette façon d'écrire rapportera trop d'arguments, remplacez-la par [[ -z ` lsof -i:22 ` ]]
                                                                                                                                                                                                                                                          🎜> autre
                                                                                                                                                                                                                                                                          En termes simples, "[[ ]]" a meilleure polyvalence que "[ ]", donc afin d'éviter ce problème, remplacez simplement "[ ]" par "[[ ]]" . De plus, "[[ ]]" est plus tolérant aux pannes que "[ ]", c'est-à-dire que les erreurs qui peuvent être signalées dans "[ ]" peuvent ne pas être signalées dans les structures "[[ ]], telles que &&, || , etc. Ce type de jugement logique n'est pas l'objet de cet article, je vais donc le mentionner brièvement

Pour plus d'articles connexes sur la façon de résoudre le problème du trop grand nombre d'arguments dans Linux bash, veuillez faire attention. vers le site PHP chinois ! >

Étiquettes associées:
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
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal