IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Convertir un script BASH en SH ?


Sujet :

Shell et commandes GNU

  1. #1
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 778
    Par défaut Convertir un script BASH en SH ?
    Salut à tous.

    Ce script sert à convertir une chaîne de caractères ASCII au format hexadécimale.
    Sauf qu'il est en BASH et que le shell que j'utilise est SH. Comment le convertir ?
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #!/bin/bash
     
    clear
    echo -e "Conversion ASCII --> HEXA"
    echo -e "=========================\n"
     
    ASCII='abcdefgh'
    HEXA=''
    for i in `seq 1 ${#ASCII}`
    do
            HEXA=$(printf "${HEXA}0x"%02X' ' \'${ASCII:$i-1:1})
    done
    HEXA="${HEXA}0x00 0x00"
    echo -e "$HEXA"
    exit
    Voici le résultat attendu :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Conversion ASCII --> HEXA
    =========================
     
    0x61 0x62 0x63 0x64 0x65 0x66 0x67 0x68 0x00 0x00
    root/>
    @+

  2. #2
    Membre Expert Avatar de Ti-Slackeux
    Homme Profil pro
    Robotique
    Inscrit en
    Août 2007
    Messages
    831
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Robotique

    Informations forums :
    Inscription : Août 2007
    Messages : 831
    Par défaut
    bonjour,

    sh n'est qu'un lien symbolique en /usr/bin/.
    sous debian il devrait pointer sur /bin/dash et chez moi le même /bin/sh -> /bin/bash.
    dash c'est un bash à la sauce debian.
    imho ça doit passer tel quel.


    hth,

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 635
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 635
    Par défaut
    le shell que tu utilises et le shell du script ne sont pas liés, sinon tu ne pourrais pas écrire de script python sans que ton interpréteur soit python lui-même.

    dash est un allègement de bash, Debian a enlevé de nombreuses fonctionnalités de bash.
    et ce script ne passsera pas sous dash.
    echo -e
    ${var:n:m}

    Code POSIX : Sélectionner tout - Visualiser dans une fenêtre à part
    for i in $(/usr/bin/seq 1 ${#v}); do /usr/bin/printf '0x%x ' "'$(echo $v|cut -c $i)"; done; echo 0x00 0x00
    Joyeux Noël !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 283
    Par défaut
    bonjour
    Citation Envoyé par Artemus24 Voir le message
    il est en BASH et que le shell que j'utilise est SH.
    Même chose que N_BaH !

    perso je suis avec fish mais il ne viendrait pas à l'idée d'utiliser fish pour un script alors que bash est disponible sur ma machine
    linux utilise le langage de la première ligne (shebang) quel que soit notre shell utilisateur.

    On doit utiliser le langage de notre shell utilisateur que si nous désirons ajouter des functions à notre shell.

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 335
    Par défaut
    Mouais...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ xxd -p -i < <(echo -n 'abcdefgh')
      0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68
    Bonnes Fêtes

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 635
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 635
    Par défaut
    <(...) n'est pas POSIX.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 160
    Par défaut
    <(...) n'est pas POSIX.
    ok, mais dans le cas de figure, la question serait plutôt : cette notation est-elle compatible avec sh ?
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  8. #8
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 778
    Par défaut
    Salut à tous et merci de votre participation.

    @ Ti-Slackeux : Bien que j'ai écrit ce script "bash" sous Debian, il devrait être utilisé par le shell "ash" de mon "ONU Huawei SmartAX Ma5671a".
    Je n'ai pas accès à l'internet depuis cet ONU. Je ne peux donc rien installé dessus par un "apt-get install ...".
    Et en plus, je suis limité en occupation mémoire.

    @ N_BaH : il n'y a pas de python installé dans l'ONU.
    Je suis en train de créer un script shell pour la configuration réseau de l'ONU.
    Je dois convertir une chaîne sur huit caractères ASCII en une chaîne sur dix caractères HEXA, complétée par le caractère null (0x00).

    La solution que tu proposes fonctionne très bien. Merci
    J'ai cru que le symbole "\0" insérait le caractère null (0x00), ce que j'ai fait dans la chaîne en entrée du script.
    Or, il n'est pas interprété, ce qui fait que le script convertit le caractère "\" puis ensuite le chiffre "0".
    C'est pour éviter d'insérer les "0x00 0x00" en fin de chaîne.

    @ papajoker : justement BASH n'est pas disponible dans l'ONU.

    @ disedorgue : "xxd" n'est pas installé et donc, je ne peux pas l'utiliser.

  9. #9
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 335
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    <(...) n'est pas POSIX.
    ok, mais on peut aussi se passer de la boucle à priori:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /usr/bin/printf "0x%x " $(/usr/bin/printf "$v" | sed "s/./'& /g")

  10. #10
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 635
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 635
    Par défaut

    en espérant que sed soit installé sur l'ONU.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  11. #11
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 778
    Par défaut
    Salut à tous.

    Oui, sed fonctionne dans l'ONU. Mais je préfère conserver la solution donnée par N_BaH, elle ne fait que deux lignes et c'est bien.

    J'ai renoncé au caractère null dans la chaîne en entrée.

    Merci à tous.
    Cordialement.
    Artemus24.
    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. script bash /ligne commande : convertir écriture décimal /scientifique et tri
    Par pontarose dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 09/07/2020, 17h25
  2. convertir script bash en ksh
    Par zorooo dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 23/12/2009, 17h50
  3. Requête POST dans un script bash
    Par desperado dans le forum Linux
    Réponses: 4
    Dernier message: 11/12/2007, 22h38
  4. Scripts bash : requêtes sql
    Par milka dans le forum Linux
    Réponses: 3
    Dernier message: 17/08/2005, 10h59
  5. Problème script Bash
    Par Sphost dans le forum Linux
    Réponses: 10
    Dernier message: 26/07/2005, 09h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo