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