#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.
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