J'ai besoin d'un script pour continuer à interroger le répertoire "receive_dir" jusqu'à ce que "stopfile" soit écrit dans le répertoire. Cela doit fonctionner malgré le répertoire vide. Jusqu'à présent, j'ai ceci mais échoue si receive_dir est vide sans fichiers avec "opérateur unaire attendu". Aidez-moi!! Cela fera ce que vous demandez (boucle jusqu'à ce que le fichier d'arrêt existe). J'ai ajouté un "sleep 1" pour réduire l'utilisation des ressources. C'est aussi une bonne pratique d'utiliser "#! Bash: If Statement Error (Opérateur unaire attendu) [duplicate] - linux, bash, shell. / Usr / bin / env ksh" en tant que shebang. #! /usr/bin/env ksh until [ -e receive_dir/stopfile] do time=$(date +%m-%d-%Y-%H:%M:%S) echo $time sleep 1 done Si vous avez un répertoire vide, le until [ $i = stopfile] est évalué comme until [ = stopfile] Quelle est l'erreur de syntaxe de cours? Un commentaire: n'parsing jamais la sortie de ls. #! /bin/bash do_something() { echo $(date +%m-%d-%Y-%H:%M:%S) "$1"} dir=". " until [[ -f "$dir/stopfile"]] do find "$dir" -print0 | while IFS= read -r -d '' filename do do_something "$filename" done done ou (beaucoup plus lent) do_something() { echo $(date +%m-%d-%Y-%H:%M:%S) "$1"} export -f do_something dir=". "
GetHashCode();} public override bool Equals(object o) var p = (Point)o; if (p. x == this. x && p. y == this. y) return true; else return false;} public static bool operator == (Point p1, Point p2) return (p2);} public static bool operator! = (Point p1, Point p2) return! (p2);}} Point p2 = new Point(2, 4); if (p1 == p2) Console. WriteLine("p1 et p2 sont égale. "); Console. WriteLine("p1 et p2 ne sont pas égale. ");}} La sortie: 2 4 2 4 p1 et p2 sont égale. La méthode Equals() par défaut compare les références. Operateur unaired attendu d. Rappelez-vous que les valeurs des objets p1 et p2 sont identiques. Mais ils ont des références différentes. N'oubliez pas que lorsque nous surchargeons la méthode Equals() à l'intérieur d'une classe, nous devrons également surcharger la méthode GetHashCode(). Également si nous surchargeons l'opérateur == à l'intérieur d'une classe, nous devons également surcharger l'opérateur! =.
J'en appel a votre aide, merci Dernière modification par fafy69 (Le 03/02/2014, à 20:11)
Par exemple, ce script exécutera la boucle jusqu'à ce que le fichier "stopfile" soit touché. until inotifywait "receive_dir" | grep "stopfile" do echo "running" done echo "done" L'avantage est qu'il ne s'agit pas d'une boucle occupée et qu'il n'est pas nécessaire d'appeler à plusieurs resockets la commande de recherche (potentiellement coûteuse).
Vous avez utilisé deux types différents de Quote dans ton code. L'un d'eux (très probablement celui qui est utilisé dans la lignée des echo dedans) devrait être invalide. 1 pour la réponse № 2 Chepner avait raison, je ne savais pas que monLes opérateurs "-gt et -lt" n'utilisaient pas de tirets comme je l'avais pensé. Il lisait comme si j'avais tapé "--gt et --lt". J'avais copié mon script d'un éditeur de texte dans vim. Opérateur unaired attendu . CURR_AVAIL=df /home2 | tail -1 | awk "{ print $4}" if [ "$DIFF_AVAIL" -gt 1000]; elif [ "$DIFF_AVAIL" -lt -1000]; Merci pour votre aide!
-ne ne fonctionne que sur les nombres 2. $machin fonctionne par substitution avant évaluation de l'expression donc pour une chaine vide il faut l'entourer de "" pour qu'il comprenne au moment de l'évaluation. Erreur script shell × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié. -eq: opérateur unaire attendu, analyse des arguments du shell. × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Nous contacter
Pokemon Gold Rom Ds, 2024