Cette expression
[ $vr > 5 ]
est en cours d'analyse comme une redirection de sortie; vérifiez pour voir si vous avez un fichier nommé "5" maintenant. La redirection de sortie est vide. Notez que l'avertissement habituel pour citer des paramètres à l'intérieur d'une expression de test n'aiderait pas ici (mais c'est toujours une bonne idée).
Vous pouvez échapper à la >
afin qu'il soit considéré comme un opérateur dans la commande de test:
if [ "$vr" \> 5 ]; then
ou vous pouvez utiliser l'opérateur de comparaison entier -gt
if [ "$vr" -gt 5 ]; then.
Puisque vous utilisez bash
, vous pouvez utiliser l'expression conditionnelle plus robuste
if [[ $vr > 5 ]]; then
ou
if [[ $vr -gt 5 ]]; then
ou utiliser une expression arithmétique
if ((vr > 5)); then
faire vos comparisions (de même pour les autres).
Note: bien que je l'ai montré comment faire >
travail comme opérateur de comparaison, même quand ils sont entourés par des entiers, ne pas le faire. La plupart du temps, vous n'obtiendrez pas les résultats que vous voulez, puisque les arguments sont comparés lexicographiquement, pas numériquement. Essayez [ 2 \> 10 ] && echo What?
Utilisez les opérateurs de comparaison d'entiers corrects (-gt
et autres) ou utilisez une expression arithmétique.
une telle réponse solide! – TopGunCoder
Tant de solutions possibles! :) – chepner
C'est une explication très claire. Appréciez-le. Et oui un fichier appelé "5" a été créé. – itsh