-2
votes

[: `] manquant 'Erreur dans UNIX | script de shell

J'ai obtenu une erreur [: `:`] 'error dans le script shell xxx

ceci est mon code et j'ai eu l'erreur comme xxx / p>


5 commentaires

Utilisez ce lien pour déboguer: shellcheck.net


Un problème que les autres n'ont pas mentionné, c'est que vous n'utilisez pas > pour les comparaisons numériques dans [...] . Si $ mému contenait une valeur entière (ce qu'elle ne le fait certainement pas), la comparaison serait si ["$ mémus" -gt 80]


Il existe de nombreux problèmes avec votre code, mais le plus crucial qui jette l'erreur est l'espace manquant avant ] . Bien que la fixation 5HAT ne rendra toujours pas votre code. Voir le commentaire de @ user123


@Tonokuriakose: Juste pour des informations supplémentaires (comme d'autres d'autres ont déjà signalé les erreurs de votre programme): votre si désigné signifie exécuter la commande Test $ mémus> 80] , c'est-à-dire utilise la valeur étendue de $ mému comme argument sur Test , puis écrit le stdout de test dans un fichier nommé 80] . Je suppose que vous trouverez un fichier vide de ce nom dans le répertoire de travail de votre script.


Est-ce que cela répond à votre question? Bash Scripting manquant ']'


5 Réponses :


-2
votes

vous avez manqué espace et fi xxx


4 commentaires

Avez-vous testé votre code posté?


Ouais, je l'ai testé localement


Je recommanderais à Vérifiez votre code ici


Merci, votre réponse m'a donné la solution



0
votes

semble être comme si vous avez un problème dans cette ligne mému = $ free -m

Ce que je comprends vous souhaite attribuer la sortie de free -m commande à la variable "MEMUS" mais c'est incorrect. Utilisez plutôt $ (commande) ou `commande` syntaxe. Ajoutez également une instruction ECHO pour la variable MEMUS Juste pour vérifier qu'est-ce que vous recevez en tant que réponse de la commande free -m dans la variable Memuse . Cela vous sera utile pour vous. xxx

sortie xxx < / p>


1 commentaires

Vous devez ajouter du code corrigé à votre réponse pour la démonstration.



1
votes

Eh bien, il y a beaucoup de problèmes. Premièrement, pour obtenir une sortie de certaines commandes à un var, vous avez besoin de ce xxx p> second, la sortie de free -m est xxx < / Pré>

Comment peut-on être comparé à seulement 80? Regardez ce que vous essayez de comparer: xxx

troisième, free -m affiche les informations de mémoire en mégaoctets et je suppose que tu veux le pourcentage, non? Il n'y a pas de telle métrique dans sans sortie . Mais sur la base de «disponible» et de «Total», vous pouvez calculer l'utilisation MEM en% et que la comparer à une valeur prédéfinie. OK permet d'essayer de résoudre ce problème. xxx

et plus compact variante grâce à gordon xxx


2 commentaires

@Keiththompson, merci!)


Vous pouvez avoir awk faire presque tout le travail pour vous: memory_used = $ (gratuit | AWK 'nr == 2 {imprimer int (100-100 * 7 $ / 2 $)}')



0
votes

Le premier problème est une erreur de syntaxe dans mémus = $ free -m , il devrait être comme ceci: xxx

Deuxièmement, dans Si [$ Memuse > 80] , vous n'avez pas non plus été un pourcentage ou la valeur de mémoire absolue utilisée, s'il s'agit d'un pourcentage que vous vérifiez, vous devrez le calculer en conséquence en utilisant la formule pourcentage.

S'il s'agit d'une valeur absolue, vous devrez alors utiliser Grep, etc. pour obtenir la valeur de la mémoire utilisée et la comparer avec 80.


0 commentaires

0
votes

J'ai eu la solution xxx

c'est ma première fois à faire des scripts Bash. Donc, la question principalement en raison de l'indentation.


0 commentaires