Script shell

Bonjour,

je ne vois pas l'erreur dans mon script

#! /bin/bash

cat etc_clone.sh | cut -d':' -f 1,3,4 | tr ":" " "

set nom='(cat etc_clone.sh | cut -d':' -f 1 | tr ":" " ")'

echo $nom

3 réponses

  1. Contributeur
    Salut,

    Quel système ?
    Quelle version de bash ?

    Essaie comme ça :

    #! /bin/bash
    
    cat etc_clone.sh | cut -d':' -f 1,3,4 | tr ":" " "
    
    nom="$(cat etc_clone.sh | cut -d':' -f 1 | tr ":" " ")"
    
    echo $nom
    1. Contributeur
      Je pense que ça ne fonctionnera pas : des guillemets entre les guillemets, il faut les protéger.
      En lisant ta réponse, je me dis que ce n'est pas clair ce qu'il cherche à faire.

      michel, dit nous ce que tu cherches à faire exactement.
    2. Contributeur
      Salut,

      Les guillemets sont à l'extérieur de la commande, et ne sont là que pour se prémunir d'éventuels espaces dans le contenu du retour qui formera la valeur de la variable...

      $ sed -n '3p' plop
      #set -xv
      
      $ sed -n '3p' plop | cut -d'-' -f2
      xv
      
      $ sed -n '3p' plop | cut -d'-' -f2 | tr "x" "n"
      nv
      
      $ A="$(sed -n '3p' plop | cut -d'-' -f2 | tr "x" "n")"
      
      $ echo $A
      nv
      
      $

      ;-))
    3. je voudrais recuperer les informations dans un fichier ligne par ligne grâce à un script. Voilà le debut de mon problème.
    4. j'utilise Cygwin sous Windows XP
    5. Contributeur
      Est-ce que la commande seule depuis un terminal marche ?
  2. Contributeur
    je mettrai une espace entre le d et ':' de cut.
    Je pense que utilise mal set aussi. Je connais mal cette commande mais elle sert surtout à modifier le comportement du shell.
    essai sans set juste en mettant nom=
    Dernière chose, tu utilises bien l'apostrophe inversé (alt+ctrl+7) pour affecter le nom ?
    1. Bonjour,
      Ça te retourne quelle erreur ?
      1. il ya un soucis sur "set", la syntaxe est bonne?
      2. #! /bin/bash

        cat etc_clone.sh | cut -d':' -f 1,3,4 | tr ":" " "

        set nom='(cat etc_clone.sh | cut -d: -f 1 | tr ":" " ")'

        echo $nom

        enlève les '' juste après le d peut-être
      3. c'est toujours pareil, en fait la commande set ne donne rien