Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/05/2020, à 21:16

joe217

[Résolu] verifier parametre

Bonsoir,

je veux lire un fichier en paramètre; comment je fais pour vérifier que $1 est bien un fichier?
et afficher chque mot dans une ligne


#!/bin/zsh

cat $1 | while read ligne ; do;
    echo -n $ligne | tr " " "\n"
   done

pour vérifier ??

if [[ -f $1 ]] 
then
cat ..

le pb de mon script c'est que si est mot est délimiter d'un caractére spécial ça n'est pas pris en compte comme deux mots différents
example

fic 1.txt
la voici)no

je dois obtenir
la
voici)
no

mais j'obtiens
la
voici)no


je dois utiliser sep? ou cut?
merci

Dernière modification par joe217 (Le 13/05/2020, à 18:00)

Hors ligne

#2 Le 09/05/2020, à 21:56

Watael

Re : [Résolu] verifier parametre

plusieurs choses :
- il faut toujours mettre les Développements de paramètres entre guillemets. TOUJOURS! à moins de savoir pourquoi.
- tu as déjà vu comment lire un fichier avec une boucle while; ici, ce n'est pas différent.
- en effet, pour vérifier qu'un argument est un fichier il faut faire ce test avant de démarrer sa lecture. (voir le point précédent)
- il faut définir ce qu'est un caractère spécial

NB: tu devrais lire le man de bash (au moins, parce qu'il est plus abordable que celui de zsh), au paragraphe Développements des paramètres;
tu y trouveras de quoi remplacer tr.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 10/05/2020, à 19:53

joe217

Re : [Résolu] verifier parametre

j'ai cherché sur le man Bash mais tout ce que j'ai trouvé d'utiles c'est IFS; et ça prend pas plusieurs variables?
aussi j'ai modifié mon 1er message;
au lieu d'avoir;
la
mon)
bas

j'ai
la
mon)bas

pour vérifier que le 1er paramètre est un fichier;

j'ai fais

 [[ -f  "$1" ]]
then cat .. 

mais ça ne marche pas,?

Hors ligne

#4 Le 10/05/2020, à 20:35

Watael

Re : [Résolu] verifier parametre

"ça marche pas", ici, c'est comme dire "j'me sens pas bien" à un médecin.
alors ? quels sont les symptômes ?


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#5 Le 10/05/2020, à 21:06

joe217

Re : [Résolu] verifier parametre

j'ai un parse error near '\n' des que je mets le

 if [[ -f  "$1" ]]
then cat .. 

Hors ligne

#6 Le 10/05/2020, à 21:12

Watael

Re : [Résolu] verifier parametre

montre-nous le script en entier.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#7 Le 10/05/2020, à 21:13

joe217

Re : [Résolu] verifier parametre

#!/bin/zsh

if [[ -f  "$1" ]]
cat $1 | while read ligne ; do;
    echo -n $ligne | tr " " "\n"
   fi
   done

j'ai un parse error near fi

Dernière modification par joe217 (Le 10/05/2020, à 21:14)

Hors ligne

#8 Le 10/05/2020, à 21:22

Watael

Re : [Résolu] verifier parametre

tiens !? on a perdu le then !
et il y a encore un point-virgule en trop après le do


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#9 Le 10/05/2020, à 21:49

Hizoka

Re : [Résolu] verifier parametre

J'ai pas franchement l'impression que tu comprends ce que tu fais...


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#10 Le 11/05/2020, à 09:26

pingouinux

Re : [Résolu] verifier parametre

Bonjour,
Le ; après le do n'a pas l'air de déranger zsh.
En revanche, fi et done sont inversés.

Hors ligne

#11 Le 11/05/2020, à 15:04

joe217

Re : [Résolu] verifier parametre

oui merci le fi et le done était inversé mais j'ai toujours le même problème ;

au lieu d'avoir;

voici
le]
bas

j'ai:

voici
le]bas

merci

Hors ligne

#12 Le 11/05/2020, à 15:53

pingouinux

Re : [Résolu] verifier parametre

Tu peux utiliser ceci

    tr -c "[:alpha:]" "\n" <<<"$ligne"

mais tous les séparateurs de mots disparaissent (espaces, parenthèses, crochets…).

Hors ligne

#13 Le 11/05/2020, à 15:59

Watael

Re : [Résolu] verifier parametre

je vais encore insister un peu pour ne pas utiliser tr mais privilégier la Substitution de paramètres.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#14 Le 11/05/2020, à 16:01

joe217

Re : [Résolu] verifier parametre

oui

 tr "[[:punct:][:space:]]" "\n"

j'ai fais à peu prés la meme ; mais la ponctuation disparait ce qui n'est pas mon but

Hors ligne

#15 Le 11/05/2020, à 16:16

pingouinux

Re : [Résolu] verifier parametre

    grep -Po '\w+(\W|$)' <<<"$ligne"

Plus simple :

#!/bin/zsh

[[ -f  "$1" ]] && grep -Po '\w+(\W|$)' "$1"

Dernière modification par pingouinux (Le 11/05/2020, à 16:25)

Hors ligne

#16 Le 11/05/2020, à 18:07

Watael

Re : [Résolu] verifier parametre

ah, m...ince ! il faut garder le caractère !? alors c'est mort pour la Substitution de paramètres. sad
elles n'ont pas de référence arrière.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#17 Le 13/05/2020, à 18:00

joe217

Re : [Résolu] verifier parametre

merci

Hors ligne