MacOS ZSH 中的 Case 语句存在问题

发布于 2025-01-09 14:22:09 字数 922 浏览 0 评论 0原文

我正在尝试在 MacOS Monterey 的 ZSH shell 中运行有关“case”语句的练习代码。我的代码并不简单,但简而言之,代码只是接收一个正整数,并且应该传递这些语句之一+最终语句。 这是代码:

#!/bin/zsh
    Bin=$(bc <<< "obase=2; $1")
Zeros=0000
Len=${#Bin}
Bin=${Zeros:$len}$Bin
case $Bin in 
    1[01][01][01]) echo Error type 8 ;;&
    [01]1[01][01]) echo Error type 4 ;;&
    [01][01]1[01]) echo Error type 2 ;;&
    [01][01][01]1) echo Error type 1 ;;&
             0000) echo No Error ;;&
                *) echo Final Binary: $Bin
esac  

但是 shell 给出了这个错误消息:

case.sh:17: parse error near `&'

我试图将 ;;& 更改为 ;| 但它给了我另一个错误消息:

/case.sh:18: parse error near `)'

经过一小时的想来想去,也没有找到解决的办法。

代码的输入:

$ case.sh 5

代码应该返回:

Error type 4
Error type 1
Final Binary:0101

有人可以帮我解决这个问题吗?请?

I'm trying to run an exercise code about "case" statement in the ZSH shell of MacOS Monterey. My code is not simple do describe but, in a nutshell, the code simply receives a positive integer number and should pass one of these statements + the final statement.
Here is the code:

#!/bin/zsh
    Bin=$(bc <<< "obase=2; $1")
Zeros=0000
Len=${#Bin}
Bin=${Zeros:$len}$Bin
case $Bin in 
    1[01][01][01]) echo Error type 8 ;;&
    [01]1[01][01]) echo Error type 4 ;;&
    [01][01]1[01]) echo Error type 2 ;;&
    [01][01][01]1) echo Error type 1 ;;&
             0000) echo No Error ;;&
                *) echo Final Binary: $Bin
esac  

But the shell gives this error message:

case.sh:17: parse error near `&'

I tried to change ;;& to ;| but it gives me another error message:

/case.sh:18: parse error near `)'

After one hour of thinking, I couldn't reach a solution.

The input of code:

$ case.sh 5

The code should return:

Error type 4
Error type 1
Final Binary:0101

Can somebody gives me a hand on this? Please?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

五里雾 2025-01-16 14:22:09

这是我的代码的解决方案:

#!/bin/zsh
Bin=$(bc <<< "obase=2; $1")
Zeros=000
Len=${#Bin}
Bin=${Zeros:$len}$Bin

case $Bin in 
    [0-9]*1[01][01][01]) echo Error type 8 ;|
    [0-9]*[01]1[01][01]) echo Error type 4 ;|
    [0-9]*[01][01]1[01]) echo Error type 2 ;|
    [0-9]*[01][01][01]1) echo Error type 1 ;|
             0000) echo No Error ;|
                *) echo Final binary: $Bin ;;
esac  

Here is the solution of my code:

#!/bin/zsh
Bin=$(bc <<< "obase=2; $1")
Zeros=000
Len=${#Bin}
Bin=${Zeros:$len}$Bin

case $Bin in 
    [0-9]*1[01][01][01]) echo Error type 8 ;|
    [0-9]*[01]1[01][01]) echo Error type 4 ;|
    [0-9]*[01][01]1[01]) echo Error type 2 ;|
    [0-9]*[01][01][01]1) echo Error type 1 ;|
             0000) echo No Error ;|
                *) echo Final binary: $Bin ;;
esac  
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文