GNU/Linux >> Tutoriels Linux >  >> Linux

Est-ce que l'exécution de "exec Echo Some ; Echo Test" Dans Bash Never Print "some Test" ?

Est-ce que l'exécution de exec echo "some "; echo "test" dans bash n'affiche jamais "un test" ?

Je demanderais confirmation à cette question, car j'écris un petit script shell et je voudrais qu'il ne continue rien après le exec la commande a été appelée.

Je pense que je n'aurais pas besoin de m'inquiéter, d'après ce que j'ai compris, après avoir consulté :

  • man 3 exec
  • man 1p exec

Les scripts shell, lorsqu'ils sont exécutés par le shell, feront

  1. le shell exécute le programme exec , qui
  2. utilise le exec*** les appels système de la famille qui remplacent le shell/bash qui a exécuté le script, par cette entrave actions ultérieures du shell (qui a été "remplacé")

Comme indiqué précédemment, l'objectif principal de cette question est de rechercher la confirmation de mon raisonnement afin d'éviter que quoi que ce soit dans le script ne se produise après l'exécution (comme echo test ) serait exécuté.

J'apprécierais une réponse générale (POSIX), dans la mesure du possible, mais juste en cas de particularités, je suis plus intéressé par GNU/Linux et GNU/Bash

Réponse acceptée :

exec termine toujours le script si il exécute une commande et le fait avec succès (non lié au code de sortie de la commande mais à son démarrage).

exec peut être exécuté sans commande de manière très utile :Pour rediriger en permanence les descripteurs de fichiers :

exec 3>/path/to/file

Si la commande ne peut pas être démarrée, le comportement du shell dépend de la configuration. bash sort par défaut.

Il peut être préférable pour vous d'utiliser une fonction à la place :

safe_exec () {
    cmd="$1"
    if test -z "$cmd" || ! test -f "$cmd" || ! test -x "$cmd"; then
        exit 1
    else
        exec "[email protected]"
    fi
}

safe_exec echo "some "; echo "test"

Linux
  1. Est-ce que ~ est toujours égal à $home ?

  2. Que fait Exec 3 ?

  3. Qu'est-ce que Echo $ ? Faire??

  4. Utilisation des déclarations de cas dans Bash

  5. Comment tester si une variable est un nombre dans Bash ?

Script Bash - Instructions conditionnelles

Comment voir la ligne de commande exacte en cours d'exécution dans une instance Bash ?

Que signifie -s et [[]] dans une condition If dans Bash ?

Je voudrais stocker tous les arguments de ligne de commande d'un script Bash dans une seule variable

Que fait 'bash -c' ?

Comment bash teste-t-il 'faux'?