bash 中是否有等效于 PowerShell 的“开关”?

Pac*_* R. 2 bash powershell

我很好奇是否有与 PowerShell 的“切换”命令等效的命令,可以让您使用输入进行操作,而不是使用大量“if 语句”

Dop*_*oti 11

如果您正在查看变量来确定流量,则需要使用case语句。

case "$var" in
   val1)
      do_something
      ;;
   val2)
      do_something_else
      ;;
esac
Run Code Online (Sandbox Code Playgroud)

如果您希望以交互方式获取用户输入,则还需要使用select语句。

select action in proceed ponder perspire quit; do
    case "$action" in
        proceed)
           go_on_then
           ;;
        ponder)
           have_a_think
           ;;
        perspire)
           exude_salty_secretions
           ;;
        quit)
           break
           ;;
    esac
done
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,它与 glob 模式匹配。例如,如果你写`[Qq]uit|exit|go-*)`。它会匹配“Quit”、“quit”、“exit”以及任何以“go-”开头的东西,比如“go-elsewhere”。`default` 将是 `*)`,它只是一个匹配任何东西的 glob。 (2认同)