Script bash linux

Résolu/Fermé
floooo - 29 sept. 2008 à 15:58
jipicy Messages postés 40805 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 30 sept. 2008 à 09:38
Bonjour,
j'ai besoin d'un script qui décompose pwd en

repertoire parent +
nom rep actuel

ex
/home/flooo/dossier1/exemple/cas1
doit donner

home/flooo/dossier1/exemple/
cas1

voila ce aue j'ai commencé
rep=$(pwd)
echo $rep
i=$(pwd | grep -o "/" | wc -l) => renvoie 5


apres je voudrais ajouter ca
mais j'y arrive pas

cas=$(pwd | cut -d/ -f$i)
echo $cas

et pour avoir le rep parent

cd ..
repp=$(pwd)
cd cas

je reviens dans le dossier

quelqu'un peu m'aider à assembler tout ca ?

4 réponses

jipicy Messages postés 40805 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 898
29 sept. 2008 à 21:11
Salut,
[tmpfs]$ echo $PWD
/home/jp/tmpfs

[tmpfs]$ echo ${PWD%/*}
/home/jp

[tmpfs]$ echo ${PWD##*/}
tmpfs

[tmpfs]$  
;-))
3
Char Snipeur Messages postés 9688 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 2 octobre 2020 1 333
29 sept. 2008 à 17:17
Salut.
Je n'ai pas compris, où est le problème ?
tu peux peut être utiliser la variable $OLDPWD après ton cd .. et ensuite une opération sur les chaines de caratère (cf man bash)
1
mon problème était que je n'arrivais pas à faire des opérations avec la variable i
il me faut i+1

i=$i+1 ne fonctionne pas
((i=$i+1))
i+=1
enfin j'ai tout essayé

et si je veux spécifié que i est un nombre
let i=$(pwd | grep -o "/" | wc -l) ou (( i=$(pwd | grep -o "/" | wc -l)))
ça coince aussi

ca c'est le premier blocage

ensuite

je veux que -f$i soit compris comme -f6
mais la encore ça marche pas j'ai une erreur

y a t'il une conversion ascii => int à effectuer
j'ai vu qu'une fonction od existait pour faire ça mais pour les fichiers et ça transforme en hexadécimal
enfin ça complique quand même mon problème
Je pense que y a plus simple
0
Char Snipeur Messages postés 9688 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 2 octobre 2020 1 333
30 sept. 2008 à 09:34
Il n'y pas de conversion particulière char -> int en bash. La bonne commande pour l'addition c'est:
((i=$i+1))

En tout cas, chez moi ça fonctionne.
0
jipicy Messages postés 40805 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 898 > Char Snipeur Messages postés 9688 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 2 octobre 2020
30 sept. 2008 à 09:38
 i=1;((i++));echo $i
2
Marche aussi ;-))
0
oki
en 2 lignes...
merci beaucoup
0