J'ai obtenu une erreur [: `:`] 'error dans le script shell ceci est mon code et j'ai eu l'erreur comme p>
5 Réponses :
vous avez manqué espace code> et
fi code>
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
semble être comme si vous avez un problème dans cette ligne Ce que je comprends vous souhaite attribuer la sortie de mému = $ free -m code>
free -m code> commande à la variable "MEMUS" mais c'est incorrect. Utilisez plutôt
$ (commande) code> ou
`commande` code> syntaxe.
Ajoutez également une instruction ECHO pour la variable
MEMUS CODE> Juste pour vérifier qu'est-ce que vous recevez en tant que réponse de la commande
free -m code> dans la variable
Memuse code>. Cela vous sera utile pour vous. P>
sortie code> strong> p>
Vous devez ajouter du code corrigé à votre réponse pour la démonstration.
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 Comment peut-on être comparé à seulement 80? Regardez ce que vous essayez de comparer: p> troisième, et plus compact variante grâce à gordon p> free -m code> est p>
free -m code> 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 code>. 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. P>
@Keiththompson, merci!)
Vous pouvez avoir awk code> faire presque tout le travail pour vous:
memory_used = $ (gratuit | AWK 'nr == 2 {imprimer int (100-100 * 7 $ / 2 $)}') code>
Le premier problème est une erreur de syntaxe dans Deuxièmement, dans 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. P> p> mémus = $ free -m code>, il devrait être comme ceci:
Si [$ Memuse > 80] code>, 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. P>
J'ai eu la solution c'est ma première fois à faire des scripts Bash. Donc, la question principalement en raison de l'indentation. P> p>
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
> code> pour les comparaisons numériques dans
[...] code>. Si
$ mému code> contenait une valeur entière (ce qu'elle ne le fait certainement pas), la comparaison serait
si ["$ mémus" -gt 80] code>
Il existe de nombreux problèmes avec votre code, mais le plus crucial qui jette l'erreur est l'espace manquant avant
] code>. 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 code> désigné signifie exécuter la commande
Test $ mémus> 80] code> , c'est-à-dire utilise la valeur étendue de
$ mému code> comme argument sur
Test code>, puis écrit le stdout de
test code> dans un fichier nommé
80] code>. 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 ']'