macos - 我如何在 OSX 的 bash case 语句中失败?

标签 macos bash

我有一些我想在 OSX 中运行的 bash 脚本,但其中一些包含 fallthrough case 终止符“;&”,这在 Mac 上似乎不起作用。这是示例代码:

#!/bin/bash
case $1 in
    test)
        echo "go" ;&    
    test)
        echo "go2" ;;
esac

在 Cygwin 中,.\test.sh 测试产生

go
go2

但是在 OSX 上,

./test.sh: line 4: syntax error near unexpected token `&'
./test.sh: line 4: `            echo "go" ;&   

最佳答案

您的代码在我的 ubuntu 系统 bash 4.2.24 上可以正常工作。

我认为您使用的是较早版本的 bash,它不支持自 bash 4 以来添加的 ;& fall-through。

来自 wikipedia :

Fall through is done using ;& (new since Bash 4) whereas ;; acts as a case break.

关于macos - 我如何在 OSX 的 bash case 语句中失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14612580/

相关文章:

bash - 如何绑定(bind)向上箭头键以转到下一个唯一命令(macOS 终端)?

bash - "while read -r line; do ...; done < file` 和 `cat file | while IFS= read -r line; do ...; done` 之间的 bash 有什么区别吗?

bash - ConEmu 中集成了带有 ZSH 的 WSL Bash - 在此处打开问题

linux - 如何在新行上获取 diff 命令的输出

bash - 如何在 BASH 中用另一个文件中的相应行填充一个文件中的空行?

linux - Bash如何打印以元音开头并以数字结尾的参数

linux - 在 Mac 文本编辑器上打开 linux 机器中的文件

objective-c - 程序集 Objective-C 类分配错误

macos - 导出包/bundle 的 UTI

macos - 在 OSX Yosemite 上设置 Go 环境时遇到问题