Linux 上的 bash 中是否有可用的 goto 语句?
长话短说,Linux 的 bash 没有 goto 语句,而且官方文档中也没有有关控制结构的信息。还需要注意的是,我们可以使用 break 和 continue 语句来实现与 goto 语句相同的行为。
通过一些微调并在 bash 中使用简单的 if 条件,可以实现 goto 的简单行为。
脚本看起来像这样
# ... Code You want to run here ... if false; then # ... Code You want to skip here ... fi # ... You want to resume here ...
另一个想法是使用比上面提到的脚本稍微复杂一点的 bash 脚本,但效果很好。
#!/bin/bash function goto { label=$1 cmd=$(sed -n "/$label:/{:a;n;p;ba};" $0 | grep -v ':$') eval "$cmd" exit } startFunc=${1:-"startFunc"} goto $startFunc startFunc: x=100 goto foo mid: x=101 echo "Not printed!" foo: x=${x:-10} echo x is $x
输出
$ ./sample.sh x is 100 $ ./sample.sh foo x is 11 $ ./sample.sh mid Not printed! x is 101
广告