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 31/08/2017, à 15: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, à 10:29)

Hors ligne

#2 Le 31/08/2017, à 15: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, à 15:29)

Hors ligne

#3 Le 31/08/2017, à 16: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, à 16:52)

Hors ligne

#4 Le 31/08/2017, à 16: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, à 17: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, à 17: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, à 10: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, à 10:39

kholo

Re : [résolu]probleme LS read ligne

si tu veux des astuces, regarde mes fils dont celui là
cool

Hors ligne