logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 31-08-2023 09:29:49

joffrey575
Membre
Distrib. : Debian Bullseye
Inscription : 19-12-2016

Script shell et If

Bonjour à tous,

J'ai commencé un petit programme en script shell.

Mais comme je n'en fait pas souvent, je perds vite ce que j'ai pu faire.

Vous auriez une page ou site pour ce type de prog ou livre ?

Voila ce que je voulais faire, c'est surtout le if qui bloque.

#!/bin/bash

NEXT_STATE='/home/user/etat'
echo $NEXT_STATE
ETAT_ON=1
ETAT_OFF=0
rm etat
echo '0' > etat

current_state=$(cat $NEXT_STATE)
echo $current_state

# Traitement etat
if [ $current_state -eq $(cat $NEXT_STATE) ] ; then
    echo 'Valeurs égales'
elif [ $current_state -ne $(cat $NEXT_STATE) ] ; then
    echo 'Valeurs égales'



Résultat :

[: -ne: unary operator expected



Merci à vous

Hors ligne

#2 31-08-2023 09:55:51

brennux
Adhérent(e)
Lieu : France
Distrib. : Debian-facile 11 (bullseye)
Noyau : 5.10.0-26-amd64
(G)UI : Xfce
Inscription : 21-04-2020

Re : Script shell et If

Bonjour,

cette discussion sur Linuxfr donne de nombreux liens intéressants.

Un des plus prometteurs est https://abs.traduc.org/abs-fr/index.html

…Il eut le béguin pour elle
Comme Debian entendu…

Xfce, style Numix, icônes Tango, bureau minimaliste

Hors ligne

#3 31-08-2023 10:09:38

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Script shell et If

Hello
et il doit faire quoi ton script?

-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#4 31-08-2023 10:14:17

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : Script shell et If

La Doc du MOOC shell Bash de la plateforme Fun MOOC https://home.pansebete.net/cloud/s/Jwc9nSt6ngf6bn8
wink

Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

En ligne

#5 31-08-2023 15:39:06

vv222
Administrateur
Lieu : Bretagne
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Re : Script shell et If

N’utilise pas le contenu d’un fichier sans tester sa présence. Donc pas de :

current_state=$(cat $NEXT_STATE)

mais :

if [ -f "$NEXT_STATE" ]; then
    current_state=$(cat "$NEXT_STATE")
fi



Avec potentiellement une erreur si le fichier n’existe pas :

if [ -f "$NEXT_STATE" ]; then
    current_state=$(cat "$NEXT_STATE")
else
    printf 'Erreur : Le fichier "%s" n’existe pas.\n' "$NEXT_STATE"
    exit 1
fi



---

Pour éviter de répéter ce bloc, tu peux en faire une fonction :

get_next_state() {
    if [ -f "$NEXT_STATE" ]; then
        current_state=$(cat "$NEXT_STATE")
    else
        printf 'Erreur : Le fichier "%s" n’existe pas.\n' "$NEXT_STATE"
        exit 1
    fi
    printf '%s' "$current_state"
}

Dernière modification par vv222 (31-08-2023 16:19:24)


Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

Hors ligne

#6 03-10-2023 12:48:15

choops
Membre
Distrib. : Debian sid
(G)UI : XFCE
Inscription : 07-05-2017

Re : Script shell et If

joffrey575 a écrit :

Résultat :

[: -ne: unary operator expected



Merci à vous



'-ne' est un comparateur d'entiers (integers) et tu tentes de comparer des chaines de caractères (strings)
Dans ton cas, le comparateur pour une égalité devrait être '==' et pour une différence '!='

Hors ligne

Pied de page des forums