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 :

Supprimer sortie dans un test if


Sujet :

Shell et commandes GNU

  1. #21
    Invité
    Invité(e)
    Par défaut


    l'évaluation arithmétique de zéro retourne faux !
    un résultat autre que zéro sera vrai.

    et il y a un un ; en trop.

  2. #22
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 103
    Par défaut
    Citation Envoyé par N_BaH Voir le message


    l'évaluation arithmétique de zéro retourne faux !
    un résultat autre que zéro sera vrai.
    C'est ce que j'observe aussi sous ksh:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ if (( 0 )) ; then echo "0 est vrai" ; else echo "0 est faux" ; fi
    0 est faux
     
    $ if (( 2 )) ; then echo "2 est vrai" ; else echo "2 est faux" ; fi
    2 est vrai
    et il y a un un ; en trop.
    ou 2... voire 4 !

  3. #23
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 875
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    l'évaluation arithmétique de zéro retourne faux !
    un résultat autre que zéro sera vrai.
    Ouh là tu vas embrouiller le pauvre Viduc.
    Je lui dis que 0 est vrai et toi tu lui dis que 0 c'est faux
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #24
    Invité
    Invité(e)
    Par défaut

    j'ai bien précisé «l'évaluation arithmétique» de zéro.
    cela peut effectivement prêter à confusion.

  5. #25
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Ouh là tu vas embrouiller le pauvre Viduc.
    Je lui dis que 0 est vrai et toi tu lui dis que 0 c'est faux
    non mais ça va je ne suis pas bon en math mais côté dev ça peut aller t'inquiète (bon pas du coté shell ok ok )

    Citation Envoyé par ok.Idriss Voir le message
    Peux-tu, en plus de nous donner la sortie de ls -l /bin/bash, nous préciser ton OS comme demandé plus haut ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    19:20 viduc@NEOTOKYO ~ % ls -l /bin/bash
    -rwxr-xr-x 1 root root 937K sept. 19 15:40 /bin/bash*

  6. #26
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 143
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    La preuve que if se base sur la valeur retournée par une commande en considérant 0 comme vrai et toute autre valeur comme faux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (( 0 )) ; then ; echo "0 est vrai" ; else ; echo "0 est faux" ; fi
    if (( 2 )) ; then ; echo "2 est vrai" ; else ; echo "2 est faux" ; fi
    affiche
    0 est vrai
    2 est faux

    Règle de base 1 : Ne jamais faire une réponse sans avoir les moyens de la tester.
    Règle de base 2 : Ne jamais faire une réponse étant dérangé plusieurs fois dans sa rédaction.


    La bonne réponse est
    2 est vrai
    0 est faux
    Je présente toutes mes excuses aux lecteurs pour cette réponse fausse et qui pourrait induire en erreur.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  7. #27
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 875
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Viduc Voir le message
    19:20 viduc@NEOTOKYO ~ % ls -l /bin/bash
    -rwxr-xr-x 1 root root 937K sept. 19 15:40 /bin/bash*[/code]
    Mouais. Il semble que tu aies créé un alias de "ls" sur "ls -h" car t'as la taille en k (accessoirement mon bash, lui, pèse 793k et pas 937k => erreur de recopie ???)

    Toutefois cela ne change rien au schmilblik. Tu as un vrai bash mais il n'accepte pas certaines instructions pourtant correctes en bash. Moi je reste sec...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #28
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Billets dans le blog
    2
    Par défaut
    erreur de copie non...

    par contre pour info je suis sous Mint, je ne sais pas si il y a des alias de créé à la base ...?

  9. #29
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Test réalisé sur un Mint 14 Nadia fraichement installée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    idriss@ThinkPad-T420 ~ $ ls -l /bin/bash
    -rwxr-xr-x 1 root root 920796 sept. 19 15:42 /bin/bash
    Autre test réalisé sur Mint 14 Nadia :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    idriss@ThinkPad-T420 ~ $ cat test.sh 
    #!/bin/bash
     
    echo "Acceptez vous la licence d'utilisation (procéder à l'installation)? (Y,n)"
     
    read reponse
     
    if [ "$reponse" == "" ] || [ "$reponse" == "Y" ] || [ "$reponse" == "y" ]
    then
        echo "Lancement de l'installation"
    else
        echo "Terminé"
    fi
    idriss@ThinkPad-T420 ~ $ ./test.sh 
    Acceptez vous la licence d'utilisation (procéder à l'installation)? (Y,n)
     
    Lancement de l'installation
    neumann@neumann-ThinkPad-T420 ~ $ ./test.sh 
    Acceptez vous la licence d'utilisation (procéder à l'installation)? (Y,n)
    n
    Terminé
    idriss@ThinkPad-T420 ~ $
    Quelque chose m'échappe

  10. #30
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Billets dans le blog
    2
    Par défaut
    heu bah pareil pour le coup....

    Je referais un test sur ma debian pour voir demain...

    J'ai installé (et utilise au quotidien) ZSH, est ce que ça peut jouer?

  11. #31
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Si dans le fichier équivalent au .bashrc pour ZSH ou autres fichiers de conf pour l'environnement, des alias sont définis lors de l'installation de ZSH, ça peut éventuellement jouer. Mais je doute qu'ils définissent des alias tout seuls ces shells là

  12. #32
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 431
    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 431
    Par défaut
    Allez, juste une question de paranoïaque:
    Tu a bien mis
    et non
    Une faute de frappe c'est rapide et des fois indétectable

    Cordialement.

  13. #33
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Billets dans le blog
    2
    Par défaut
    en faite mon zshrc est un peu modifié ...

    je le récupère ici: http://formation-debian.via.ecp.fr/shell.html

    il ressemble donc à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
     
    # /etc/zsh/zshrc ou ~/.zshrc
    # Fichier de configuration principal de zsh, lu au lancement des shells interactifs
    # (et non des shells d'interprétation de fichier)
    # Formation Debian GNU/Linux par Alexis de Lattre
    # http://formation-debian.via.ecp.fr/
     
    ################
    # 1. Les alias #
    ################
     
    # Gestion du 'ls' : couleur & ne touche pas aux accents
    alias ls='ls --classify --tabsize=0 --literal --color=auto --show-control-chars --human-readable'
     
    # Demande confirmation avant d'écraser un fichier
    alias cp='cp --interactive'
    alias mv='mv --interactive'
    alias rm='rm --interactive'
     
    # Raccourcis pour 'ls'
    alias ll='ls -l'
    alias la='ls -a'
    alias lla='ls -la'
     
    # Quelques alias pratiques
    alias c='clear'
    alias less='less --quiet'
    alias s='cd ..'
    alias df='df --human-readable'
    alias du='du --human-readable'
    alias m='mutt -y'
    alias md='mkdir'
    alias rd='rmdir'
    alias upgrade='apt-get update && apt-get upgrade && apt-get clean'
    alias vnc='xtightvncviewer'
     
    #######################################
    # 2. Prompt et définition des touches #
    #######################################
     
    # Exemple : ma touche HOME, cf  man termcap, est codifiee K1 (upper left
    # key  on keyboard)  dans le  /etc/termcap.  En me  referant a  l'entree
    # correspondant a mon terminal (par exemple 'linux') dans ce fichier, je
    # lis :  K1=\E[1~, c'est la sequence  de caracteres qui sera  envoyee au
    # shell. La commande bindkey dit simplement au shell : a chaque fois que
    # tu rencontres telle sequence de caractere, tu dois faire telle action.
    # La liste des actions est disponible dans "man zshzle".
     
    # Correspondance touches-fonction
    bindkey ''    beginning-of-line       # Home
    bindkey "\e[1~" beginning-of-line
    bindkey "\e[H"  beginning-of-line
    bindkey ''    end-of-line             # End
    bindkey "\e[4~" end-of-line
    bindkey "\e[F"  end-of-line
    bindkey ''    delete-char             # Del
    bindkey '[3~' delete-char
    bindkey '[2~' overwrite-mode          # Insert
    bindkey '[5~' history-search-backward # PgUp
    bindkey '[6~' history-search-forward  # PgDn
     
    # Prompt couleur (la couleur n'est pas la même pour le root et
    # pour les simples utilisateurs)
    if [ "`id -u`" -eq 0 ]; then
      export PS1="%{%}%T %{%}%n%{%}@%{%}%m %{%}%~ %{%}%#%{%} "
    else
      export PS1="%{%}%T %{%}%n%{%}@%{%}%m %{%}%~ %{%}%#%{%} "
    fi
     
    # Prise en charge des touches [début], [fin] et autres
    typeset -A key
     
    key[Home]=${terminfo[khome]}
    key[End]=${terminfo[kend]}
    key[Insert]=${terminfo[kich1]}
    key[Delete]=${terminfo[kdch1]}
    key[Up]=${terminfo[kcuu1]}
    key[Down]=${terminfo[kcud1]}
    key[Left]=${terminfo[kcub1]}
    key[Right]=${terminfo[kcuf1]}
    key[PageUp]=${terminfo[kpp]}
    key[PageDown]=${terminfo[knp]}
     
    [[ -n "${key[Home]}"    ]]  && bindkey  "${key[Home]}"    beginning-of-line
    [[ -n "${key[End]}"     ]]  && bindkey  "${key[End]}"     end-of-line
    [[ -n "${key[Insert]}"  ]]  && bindkey  "${key[Insert]}"  overwrite-mode
    [[ -n "${key[Delete]}"  ]]  && bindkey  "${key[Delete]}"  delete-char
    [[ -n "${key[Up]}"      ]]  && bindkey  "${key[Up]}"      up-line-or-history
    [[ -n "${key[Down]}"    ]]  && bindkey  "${key[Down]}"    down-line-or-history
    [[ -n "${key[Left]}"    ]]  && bindkey  "${key[Left]}"    backward-char
    [[ -n "${key[Right]}"   ]]  && bindkey  "${key[Right]}"   forward-char
     
     
    # Titre de la fenêtre d'un xterm
    case $TERM in
       xterm*)
           precmd () {print -Pn "\e]0;%n@%m: %~\a"}
           ;;
    esac
     
    # Gestion de la couleur pour 'ls' (exportation de LS_COLORS)
    if [ -x /usr/bin/dircolors ]
    then
      if [ -r ~/.dir_colors ]
      then
        eval "`dircolors ~/.dir_colors`"
      elif [ -r /etc/dir_colors ]
      then
        eval "`dircolors /etc/dir_colors`"
      else
        eval "`dircolors`"
      fi
    fi
     
     
    ###########################################
    # 3. Options de zsh (cf 'man zshoptions') #
    ###########################################
     
    # Je ne veux JAMAIS de beeps
    unsetopt beep
    unsetopt hist_beep
    unsetopt list_beep
    # >| doit être utilisés pour pouvoir écraser un fichier déjà existant ;
    # le fichier ne sera pas écrasé avec '>'
    unsetopt clobber
    # Ctrl+D est équivalent à 'logout'
    unsetopt ignore_eof
    # Affiche le code de sortie si différent de '0'
    setopt print_exit_value
    # Demande confirmation pour 'rm *'
    unsetopt rm_star_silent
    # Correction orthographique des commandes
    # Désactivé car, contrairement à ce que dit le "man", il essaye de
    # corriger les commandes avant de les hasher
    #setopt correct
    # Si on utilise des jokers dans une liste d'arguments, retire les jokers
    # qui ne correspondent à rien au lieu de donner une erreur
    setopt nullglob
     
    # Schémas de complétion
     
    # - Schéma A :
    # 1ère tabulation : complète jusqu'au bout de la partie commune
    # 2ème tabulation : propose une liste de choix
    # 3ème tabulation : complète avec le 1er item de la liste
    # 4ème tabulation : complète avec le 2ème item de la liste, etc...
    # -> c'est le schéma de complétion par défaut de zsh.
     
    # Schéma B :
    # 1ère tabulation : propose une liste de choix et complète avec le 1er item
    #                   de la liste
    # 2ème tabulation : complète avec le 2ème item de la liste, etc...
    # Si vous voulez ce schéma, décommentez la ligne suivante :
    #setopt menu_complete
     
    # Schéma C :
    # 1ère tabulation : complète jusqu'au bout de la partie commune et
    #                   propose une liste de choix
    # 2ème tabulation : complète avec le 1er item de la liste
    # 3ème tabulation : complète avec le 2ème item de la liste, etc...
    # Ce schéma est le meilleur à mon goût !
    # Si vous voulez ce schéma, décommentez la ligne suivante :
    #unsetopt list_ambiguous
    # (Merci à Youri van Rietschoten de m'avoir donné l'info !)
     
    # Options de complétion
    # Quand le dernier caractère d'une complétion est '/' et que l'on
    # tape 'espace' après, le '/' est effacé
    setopt auto_remove_slash
    # Ne fait pas de complétion sur les fichiers et répertoires cachés
    unsetopt glob_dots
     
    # Traite les liens symboliques comme il faut
    setopt chase_links
     
    # Quand l'utilisateur commence sa commande par '!' pour faire de la
    # complétion historique, il n'exécute pas la commande immédiatement
    # mais il écrit la commande dans le prompt
    setopt hist_verify
    # Si la commande est invalide mais correspond au nom d'un sous-répertoire
    # exécuter 'cd sous-répertoire'
    setopt auto_cd
    # L'exécution de "cd" met le répertoire d'où l'on vient sur la pile
    setopt auto_pushd
    # Ignore les doublons dans la pile
    setopt pushd_ignore_dups
    # N'affiche pas la pile après un "pushd" ou "popd"
    setopt pushd_silent
    # "pushd" sans argument = "pushd $HOME"
    setopt pushd_to_home
     
    # Les jobs qui tournent en tâche de fond sont nicé à '0'
    unsetopt bg_nice
    # N'envoie pas de "HUP" aux jobs qui tourent quand le shell se ferme
    unsetopt hup
     
     
    ###############################################
    # 4. Paramètres de l'historique des commandes #
    ###############################################
     
    # Nombre d'entrées dans l'historique
    export HISTORY=1000
    export SAVEHIST=1000
     
    # Fichier où est stocké l'historique
    export HISTFILE=$HOME/.history
     
    # Ajoute l'historique à la fin de l'ancien fichier
    #setopt append_history
     
    # Chaque ligne est ajoutée dans l'historique à mesure qu'elle est tapée
    setopt inc_append_history
     
    # Ne stocke pas  une ligne dans l'historique si elle  est identique à la
    # précédente
    setopt hist_ignore_dups
     
    # Supprime les  répétitions dans le fichier  d'historique, ne conservant
    # que la dernière occurrence ajoutée
    #setopt hist_ignore_all_dups
     
    # Supprime les  répétitions dans l'historique lorsqu'il  est plein, mais
    # pas avant
    setopt hist_expire_dups_first
     
    # N'enregistre  pas plus d'une fois  une même ligne, quelles  que soient
    # les options fixées pour la session courante
    #setopt hist_save_no_dups
     
    # La recherche dans  l'historique avec l'éditeur de commandes  de zsh ne
    # montre  pas  une même  ligne  plus  d'une fois,  même  si  elle a  été
    # enregistrée
    setopt hist_find_no_dups
     
     
    ###########################################
    # 5. Complétion des options des commandes #
    ###########################################
     
    zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}'
    zstyle ':completion:*' max-errors 3 numeric
    zstyle ':completion:*' use-compctl false
     
    autoload -U compinit
    compinit
    j'ai bien mis

    et d'ailleurs du coup si je comprends bien la logique le script est censé utilisé ce shell et non le mien non???

  14. #34
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 431
    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 431
    Par défaut
    Cela dépend de comment tu exécutes le script, si celui-ci est en mode d’exécution et que tu le lance directement, il s’exécute en respectant le shebang, donc dans ton cas en /bin/bash.
    Si tu le source, il utilisera le shell en cours.
    le sourcing se fait de au moins de ces 2 façons:
    ou
    peux tu aussi tester les lignes suivantes (pas besoin de les mettre dans un script, les executer les unes derrière les autres):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /bin/bash
    test "tyty" = "tutu"
    echo $?
    test "tyty" = "tyty"
    echo $?
    test "tyty" == "tyty"
    Et nous retourner si tu as une erreur sur l'une des lignes ?

    Cordialement.

  15. #35
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Billets dans le blog
    2
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    16:21 viduc@NEOTOKYO ~ % /bin/bash
    viduc@NEOTOKYO ~ $ test "tyty" = "tutu"
    viduc@NEOTOKYO ~ $ echo $?
    1
    viduc@NEOTOKYO ~ $ test "tyty" = "tyty"
    viduc@NEOTOKYO ~ $ echo $?
    0
    viduc@NEOTOKYO ~ $ test "tyty" == "tyty"
    viduc@NEOTOKYO ~ $ echo $?
    0
    viduc@NEOTOKYO ~ $

  16. #36
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 875
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Viduc Voir le message
    et d'ailleurs du coup si je comprends bien la logique le script est censé utilisé ce shell et non le mien non???
    Exact. Ce mécanisme est fait pour que des utilisateurs différents, travaillant chacun dans un shell différent, puissent exécuter chacun le script de l'autre. Sinon bye bye la coopération entre les utilisateurs...

    Donc quand tu lances un programme, un script ou autre, alors
    • ton shell courant est dupliqué dans un shell appelé "fils"
    • à ce moment là, le shell de départ (le père) se met en attente de la fin du fils
    • pendant ce temps, s'il s'agit d'un script, le fils va appeler le programme (générelement un shell mais pas forcément) indiqué dans la première ligne et va lui demander d'interpréter le script
    • une fois le fils fini, le père reprend la main

    Ce mécanisme permet aussi de lancer les programme en arrière plan en leur mettant un "&" en fin de ligne. A ce moment là, le père n'attend plus la fin du fils. C'est plus trop utilisé aujourd'hui avec les environnement/rms graphiques et multifenêtrés mais à l'époque des terminaux uniques, cela avait son utilité.

    Sinon pour démontrer le fonctionnement du shebang, tu peux taper et exécuter le code suivant
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/bin/rm
     
    # Ici tu mets ce que tu veux, même un truc absurde, de toute façon il ne sera jamais exécuté vu que le script aura été passé au travers de la commande rm et donc été effacé...
    qsddqsqsd
    qsdqsdqsd
    qsdqsdqsdq
    dqdqdqdqs
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  17. #37
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 103
    Par défaut
    Citation Envoyé par Viduc Voir le message
    j'ai bien mis

    et d'ailleurs du coup si je comprends bien la logique le script est censé utilisé ce shell et non le mien non???
    Petite remarque en passant: il faut impérativement que ce soit la toute première ligne du script! (pas de ligne vide avant, par exemple)

  18. #38
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 875
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jack-ft Voir le message
    Petite remarque en passant: il faut impérativement que ce soit la toute première ligne du script! (pas de ligne vide avant, par exemple)
    +1
    Ce qui me fait penser à une petite question que personne n'a posée: Viduc, quel est ton shell de base (celui dans lequel tu es placé à la connexion) ???

    On peut le voir en tapant echo $0 et/ou grep $LOGNAME /etc/passwd depuis un terminal...

    Parce que si ce que dit jack-ft est ton cas (et que ton shebang n'est pas en première ligne), c'est ton shell de base qui prend la main...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  19. #39
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Billets dans le blog
    2
    Par défaut
    Salut,

    oui c'est bien sur la toute première ligne (sans espace avant)

    et mon shell de base c'est zsh comme je disais.

  20. #40
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 431
    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 431
    Par défaut
    Citation Envoyé par Viduc Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    16:21 viduc@NEOTOKYO ~ % /bin/bash
    viduc@NEOTOKYO ~ $ test "tyty" = "tutu"
    viduc@NEOTOKYO ~ $ echo $?
    1
    viduc@NEOTOKYO ~ $ test "tyty" = "tyty"
    viduc@NEOTOKYO ~ $ echo $?
    0
    viduc@NEOTOKYO ~ $ test "tyty" == "tyty"
    viduc@NEOTOKYO ~ $ echo $?
    0
    viduc@NEOTOKYO ~ $
    Alors, ce que je ne comprend pas, c'est que ici, il n'y a pas de problème, avec:
    mais que si tu utilises cette syntaxe dans un script dont le shebang est celui du bash, cela ne fonctionne pas.

    C'est vraiment bizarre...

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/07/2012, 22h53
  2. Supprimer les colonnes DEV TEST dans le contexte
    Par amansouri dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 16/03/2012, 16h35
  3. Réponses: 2
    Dernier message: 27/12/2005, 13h52
  4. Création des états de sortie dans JBuilder ?
    Par k_hamza75 dans le forum JBuilder
    Réponses: 2
    Dernier message: 15/11/2004, 11h44
  5. [debutant] supprimer elements dans une listbox
    Par F.F. dans le forum C++Builder
    Réponses: 8
    Dernier message: 02/07/2004, 11h38

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