在Sh中制作一个if子句

时间:2009-07-14 21:35:49

标签: if-statement sh

我在一个由.bashrc和.zshrc提供的文件中有以下内容。语法来自site

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 -clause?

3 个答案:

答案 0 :(得分:4)

你需要在测试操作符中包含你的条件(以及引用习惯的引号):

在shell中:

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

在bash中:

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

答案 1 :(得分:2)

您需要test别名[命令:

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

答案 2 :(得分:0)

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

  

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

if必须后面跟一个“boolean statement”,如果这个语句返回0,那么“then”实际执行...

在你的情况下,赛斯的回答是你正在寻找的。