在 Sh 中创建 if 子句

发布于 2024-07-27 04:29:03 字数 491 浏览 7 评论 0原文

我在一个由 .bashrc 和 .zshrc 来源的文件中有以下内容。 语法来自网站

if $SHELL=/bin/zsh                                                               
         then
     # to not java .class when running java 
             myclasslist () { reply=(${$(ls *.class)%.class}) }
             compctl -K myclasslist java
fi

Zsh 和 Bash 都对此感到不安。

如何在 sh 中创建 if 子句?

I have the following in a file which is sourced both by .bashrc and .zshrc. The syntax is from the site.

if $SHELL=/bin/zsh                                                               
         then
     # to not java .class when running java 
             myclasslist () { reply=(${$(ls *.class)%.class}) }
             compctl -K myclasslist java
fi

Both Zsh and Bash go upset of it.

How can you make a if -clause in sh?

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

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

发布评论

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

评论(3

舂唻埖巳落 2024-08-03 04:29:03

您需要将您的条件包装在测试运算符中(以及引号以养成习惯):

在 shell 中:

#!/bin/sh
if [ "$SHELL" = "/bin/zsh" ]; then
       # do your thing
fi

在 bash 中:

#!/bin/bash
if [ "$SHELL" == "/bin/zsh" ]; then
    # just do it!
fi

You need to wrap your condition in the test operator (as well as quotes to get in the habit):

In shell:

#!/bin/sh
if [ "$SHELL" = "/bin/zsh" ]; then
       # do your thing
fi

In bash:

#!/bin/bash
if [ "$SHELL" == "/bin/zsh" ]; then
    # just do it!
fi
深陷 2024-08-03 04:29:03

您需要 test 别名 [ 命令:

if [ "$SHELL" = "/bin/zsh" ]
then
    myclasslist () { reply=(${$(ls *.class)%.class}) }
    compctl -K myclasslist java
fi

You need the test alias [ command:

if [ "$SHELL" = "/bin/zsh" ]
then
    myclasslist () { reply=(${$(ls *.class)%.class}) }
    compctl -K myclasslist java
fi
壹場煙雨 2024-08-03 04:29:03

在您提到的网站上,他们不使用测试运算符([]),因为他们说:

例如,cat如果运行则返回0
成功,如果遇到则为1
一个错误

if 后面必须跟一个“布尔语句”,如果该语句返回 0,则实际执行“then”...

在您的情况下,Seth 的答案就是您正在寻找的。

On the web site you mention, they do not use the test operator ([]) because they say:

For example, cat returns 0 if it runs
successfully, and 1 if it encounters
an error

The if must be followed by a "boolean statement" and if this statement returns 0, the "then" is actually executed...

In your case, Seth's answer is what you're looking for.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文