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 子句?

4

3 回答 3

4

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

在外壳中:

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

在 bash 中:

#!/bin/bash
if [ "$SHELL" == "/bin/zsh" ]; then
    # just do it!
fi
于 2009-07-14T21:41:13.277 回答
2

您需要test别名[命令:

if [ "$SHELL" = "/bin/zsh" ]
then
    myclasslist () { reply=(${$(ls *.class)%.class}) }
    compctl -K myclasslist java
fi
于 2009-07-14T21:41:48.487 回答
0

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

例如,cat 运行成功返回 0,遇到错误返回 1

if 后面必须跟一个“布尔语句”,如果这个语句返回 0,那么“then”实际上会被执行......

在你的情况下,赛斯的答案就是你要找的。

于 2009-07-14T21:49:44.273 回答