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
廣告