Script bash linux

Résolu
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

  1. Modérateur
    Salut,
    [tmpfs]$ echo $PWD
    /home/jp/tmpfs
    
    [tmpfs]$ echo ${PWD%/*}
    /home/jp
    
    [tmpfs]$ echo ${PWD##*/}
    tmpfs
    
    [tmpfs]$  
    ;-))
    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
      1. Contributeur
        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.
    2. Contributeur
      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)