如何在shell脚本中使用goto语句

时间:2015-05-12 04:56:07

标签: bash shell

我是shell脚本的初学者。我对如何使用goto语句一无所知。我使用以下代码。

start:
echo "Main Menu"
echo "1 for Copy"
echo "2 for exit"
read NUM
case $NUM in
"1")
echo "CopyNUM"
goto start:;
"2")         
echo "Haiiii";
goto start:
*)
echo "ssss";
esac

2 个答案:

答案 0 :(得分:3)

正如其他人所指出的那样,''(或其他类似POSIX的外壳)中没有goto - 其他更灵活的流量控制结构取而代之。 在bash中查找标题Compound Commands

在您的情况下,man bash命令是正确的选择。 因为如何使用它可能并不明显,这里有一些东西可以让你开始:

select

答案 1 :(得分:1)

以下是使用select循环来完成目标的简短示例。如果您想要自定义格式,可以将while循环与自定义菜单一起使用,但基本菜单是select旨在执行的操作:

#!/bin/bash

## array of menu entries
entries=( "for Copy"
          "for exit" )

## set prompt for select menu
PS3='Selection: '

while [ "$menu" != 1 ]; do                ## outer loop redraws menu each time
    printf "\nMain Menu:\n\n"             ## heading for menu
    select choice in "${entries[@]}"; do  ## select displays choices in array
        case "$choice" in                 ## case responds to choice
            "for Copy" )
                echo "CopyNUM"
                break                     ## break returns control to outer loop
                ;;
            "for exit" )         
                echo "Haiiii, exiting"
                menu=1                    ## variable setting exit condition
                break
                ;;
            * )
                echo "ssss"
                break
                ;;
        esac
    done
done

exit 0

使用/输出

$ bash select_menu.sh

Main Menu:

1) for Copy
2) for exit
Selection: 1
CopyNUM

Main Menu:

1) for Copy
2) for exit
Selection: 3
ssss

Main Menu:

1) for Copy
2) for exit
Selection: 2
Haiiii, exiting