Script bash linux

Résolu
floooo -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
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. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,
    [tmpfs]$ echo $PWD
    /home/jp/tmpfs
    
    [tmpfs]$ echo ${PWD%/*}
    /home/jp
    
    [tmpfs]$ echo ${PWD##*/}
    tmpfs
    
    [tmpfs]$  
    ;-))
    3
  2. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    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
  3. floooo
     
    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
    1. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
       
      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
      1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention  
         
         i=1;((i++));echo $i
        2
        Marche aussi ;-))
        0
  4. floooo
     
    oki
    en 2 lignes...
    merci beaucoup
    0