Expression (Shell -script)

[Fermé]
Signaler
-
 momsse -
Bonsoir,

J'aurais besoin d'aide pour l'eclaircissement de ce test:

if


En fait je ne comprend pas en particulier ce que j'ai mis en gras, je remercie d'avance tous ceux qui prendront du temps pour m'expliquer un peu l'expression !

Merci d'avance

9 réponses

Donc si je résume :

-lt (inférieur)

-le (inférieur ou égale)

De quelle manière teste t'on :

superieur et superieur ou égale ?

Encore une fois merci d'être là !
5
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42854 internautes nous ont dit merci ce mois-ci

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 881
Re-

-lt = plus petit que (less than)
-le = plus petit ou égal (less or equal)
-ne = pas égal à (not equal)
-gt = plus grand que (greater than)
-ge = plus grand ou égal (greater or equal)

Tiens je crois que ça te sera très utile : http://abs.traduc.org/abs-4.2.01-fr/
Si la traduction n'est pas terminée, se rabattre vers la version antérieure : http://abs.traduc.org/abs-4.1-fr/

La VO : https://tldp.org/LDP/abs/html/
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 881
Salut,

il n'en manque pas un bout ???

;-)))
Ok, je viens de comprendre, tous shell-script est lancée dans un sous shell, et ne peut donc pas modifier le shell parent, en revanche la command source permet de modifier le shell courant !

Ca c'est bon à savoir, je te remercie pour l'explication avec les scripts !
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 881
Copier/Coller de l'expression de momsse...

Note : L'espace entre les 2 crochets fermants de l'expression est à supprimer. Il n'est ici que pour palier au désagrément de certaines balises de mise en forme du site CCM.
if [[ ( $(wc -l < $2) -lt $1 ) || ( $1 -le 0 ) ] ] 

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 881
Re-

Apparemment on teste ( [[ ) que la valeur du résultat du nombre de ligne (wc -l) contenu dans le fichier passé en paramètre ($2) est inférieur (-lt) au 1er paramètre ($1), et dans le cas contraire (||) on teste si le 1er paramètre est inférieur ou égal à zéro (-le).
Merci !

Je n'arrive pas à comprendre le résultat de ce script (donnée en exercice)

#!/bin/sh

mkdir $1
cd $1


Théoriquement il est censé crée un repertoire avec comme nom pour s'y deplacer, en pratique il ne fait que le creer et ne s'y déplace pas...

C'est pourtant un script simple !
comprendre "avec comme nom le premier argument"
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 881
Jette un oeil aux sous-shells.
Je ne comprend pas vraiment, je pense avoir compris le mécanisme de sous-shell, hors ici, je n'utilise pas de parenthèse donc, en théorie cela devrait modifier le bahs courant, de plus, le script semble équivalent à la commande suivante:

$ mkdir toto; cd toto

Comment faudrait-il appeler mon script pour qu'il ,puisse fonctionner ?

Merci de ton aide !
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 881
Re-

Pour bien comprendre le mécanisme, crées ces 2 petits scripts :
script 1
#! /bin/bash
# foo.sh

echo -e "Répertoire actuel :\c "
pwd
echo
{
echo -e "Création du répertoire $1\n"
mkdir $1
echo -e "Déplacement dans le répertoire $1\n"
cd $1
}
echo -e "Nous sommes dans le répertoire :\c "
pwd
echo -e "\nBye bye."
script 2
#! /bin/bash
# bar.sh

echo -e "Répertoire actuel :\c "
pwd
echo
(
echo -e "Création du répertoire $1\n"
mkdir $1
echo -e "Déplacement dans le répertoire $1\n"
cd $1
)
echo -e "Nous sommes dans le répertoire :\c "
pwd
echo -e "\nBye bye."
et lances-les respectivement comme suit :
sh foo.sh mon_rep
source foo.sh mon_rep
sh bar.sh
source bar.sh
entre chaque commande n'oublie pas de détruire "mon_rep" ou alors change de nom de répertoire à chaque fois ;-))

la commande "source" (voir le man bash) peut aussi s'écrire "." :
source foo.sh
est équivalent à :
. foo.sh
Pour voir directement le paragraphe concernant la commande "source" dans le man bash tapes :
man bash -P 'less -p "^       source"'
;-))