#1 Le 31/08/2017, à 14:06
- robotzeus
[résolu]probleme LS read ligne
Bonjour
je cherche a faire un script qui liste les fichier (et exclu les dossiers)
le code de base est le suivant
ls | while read line; do
if [ -f "$line" ]
then
echo $line
fi
done
il fonctionne mais je veux qu'il lit les fichier de son propre répertoire
j'ai donc fais la modification suivante
execPath=$(dirname $0)
ls $execPath | while read line; do
if [ -f "$line" ]
then
echo $line
fi
done
ce coup ci le programme ne donne aucun retour ,
j'ai donc enlever le parametre -f pour voir
execPath=$(dirname $0) # recupere l'adresse ou se trouver le bash
ls $execPath | while read line; do
if [ "$line" ]
then
echo $line
fi
done
mais la il affiche les fichier et les dossier
je n'arrive pas a comprendre pourquoi cela ne fonctionne pas dans le 2eme scripte puisque le script 1et 3 valide le fonctionnement et le chemin
Dernière modification par robotzeus (Le 01/09/2017, à 09:29)
Hors ligne
#2 Le 31/08/2017, à 14:26
- kholo
Re : [résolu]probleme LS read ligne
salut,
ah... c'est à mon tour de passer le flambeau
avec bash, si tu peux éviter ls et les pipes, c'est mieux :
for file in *
do
echo $file
done
pour
if [ "$line" ]
bash s'attend à trouver true ou false
Dernière modification par kholo (Le 31/08/2017, à 14:29)
Hors ligne
#3 Le 31/08/2017, à 15:31
- robotzeus
Re : [résolu]probleme LS read ligne
ok donc ca me donne
execPath=$(dirname $0) # recupere l'adresse ou se trouver le bash
for file in $execPath/*
do
if test -f "$file"
then
echo $file
fi
done
mais ca me soulève un nouveau problème j'ai le chemin qui s'affiche avec le nom du fichier
faut t'il coupé le chemin il y a t'il plus simple?
edit j'ai aussi penser a utilisé sed mais pas trouver comment faire
Dernière modification par robotzeus (Le 31/08/2017, à 15:52)
Hors ligne
#4 Le 31/08/2017, à 15:51
- kholo
Re : [résolu]probleme LS read ligne
tant que tu peux mets des doubles quottes à tes variables
plus comme ça :
execPath="$(dirname "$0")" # recupere l'adresse ou se trouver le bash
for file in "$execPath/"* # garder le * hors des quottes
do
if [ -f "${file}" ]
then
echo "${file##*/}"
# echo "${file}"
fi
done
Hors ligne
#5 Le 31/08/2017, à 16:00
- robotzeus
Re : [résolu]probleme LS read ligne
mouai c'est vrai que je ne pense pas vraiment a la relecture
[ -f "${file}" ]
et
echo "${file##*/}"
ne fonctionne pas pour le reste je récupère un fonctionnement identique sans pour autant avoir réusi a enlever le chemin
Hors ligne
#6 Le 31/08/2017, à 16:11
- kholo
Re : [résolu]probleme LS read ligne
je veux qu'il lit les fichier de son propre répertoire
c'est la recherche...
tu es bien en bash ?
#!/bin/bash
# ----------------------------------------------
nomlogiciel="${0##*/}"
FONCTION=""
VERSION="alpha"
# NOTES DE VERSIONS
# ----------------------------------------------
#
# ----------------------------------------------
echo "lancement $nomlogiciel..."
execPath="$(dirname "$0")" # recupere l'adresse ou se trouver le bash
for file in "$execPath/"*
do
if [ -f "${file}" ]
then
echo "${file##*/}"
# echo "${file}"
fi
done
exit 0
ne fonctionne pas pour le reste je récupère un fonctionnement identique sans pour autant avoir réusi a enlever le chemin
c'est quoi le reste ?
Hors ligne
#7 Le 01/09/2017, à 09:29
- robotzeus
Re : [résolu]probleme LS read ligne
Autant pour moi.
j'ai dû me trompé en écrivant mais impossible de savoir ou (en gros va falloir que je reste très vigilant )
je te remercie également pour l’entête, ça fait partie des réflexes que je n'ai pas lorsque j’écris un programme
cordialement
Hors ligne
#8 Le 01/09/2017, à 09:39
- kholo
Re : [résolu]probleme LS read ligne
si tu veux des astuces, regarde mes fils dont celui là
Hors ligne