GNU/Linux >> Tutoriels Linux >  >> Linux

Existe-t-il une instruction goto dans bash?

Non, il n'y en a pas; voir §3.2.4 "Commandes composées" dans le Manuel de référence de Bash pour des informations sur les structures de contrôle qui font exister. Notamment, notez la mention de break et continue , qui ne sont pas aussi flexibles que goto , mais sont plus flexibles dans Bash que dans certains langages, et peuvent vous aider à obtenir ce que vous voulez. (Tout ce que vous voulez . . .)


Si vous l'utilisez pour ignorer une partie d'un gros script pour le débogage (voir le commentaire de Karl Nicoll), alors si false pourrait être une bonne option (pas sûr que "false" soit toujours disponible, pour moi c'est dans /bin/false) :

# ... Code I want to run here ...

if false; then

# ... Code I want to skip here ...

fi

# ... I want to resume here ...

La difficulté survient lorsqu'il est temps d'extraire votre code de débogage. La construction "if false" est assez simple et mémorable, mais comment trouvez-vous le fi correspondant ? Si votre éditeur vous permet de bloquer l'indentation, vous pouvez indenter le bloc ignoré (vous voudrez alors le remettre lorsque vous aurez terminé). Ou un commentaire sur la ligne fi, mais il faudrait que ce soit quelque chose dont vous vous souviendrez, qui, je suppose, dépendra beaucoup du programmeur.


Cela peut en effet être utile pour certains besoins de débogage ou de démonstration.

J'ai trouvé cette solution de Bob Copeland http://bobcopeland.com/blog/2012/10/goto-in-bash/ élégante :

#!/bin/bash
# include this boilerplate
function jumpto
{
    label=$1
    cmd=$(sed -n "/$label:/{:a;n;p;ba};" $0 | grep -v ':$')
    eval "$cmd"
    exit
}

start=${1:-"start"}

jumpto $start

start:
# your script goes here...
x=100
jumpto foo

mid:
x=101
echo "This is not printed!"

foo:
x=${x:-10}
echo x is $x

donne :

$ ./test.sh
x is 100
$ ./test.sh foo
x is 10
$ ./test.sh mid
This is not printed!
x is 101

Linux
  1. Comment utiliser l'instruction conditionnelle if else dans le script bash

  2. Script bash :passage de l'opérateur backtick aux parenthèses $

  3. 4 Exemples d'instructions Bash If ( If then fi, If then else fi, If elif else fi, Nested if )

  4. Instruction Bash/sh 'if else'

  5. Tableaux bash et indices négatifs, oui ou non ?

Instruction Bash if..else

Bash Shebang

Bash Scripting - Déclaration de cas

Comment travailler avec l'instruction Case dans les scripts Bash

Syntaxe Bash If Else avec exemples

Comprendre Bash If Else et d'autres instructions conditionnelles