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

高洛峰
高洛峰original
2017-01-04 17:23:472089parcourir

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`"

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 ! >

Déclaration:
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