If statement 在Sh中生成if子句

If statement 在Sh中生成if子句,if-statement,sh,If Statement,Sh,我在一个文件中包含以下内容,该文件由.bashrc和.zshrc提供。语法来自 Zsh和Bash都对此感到不安 如何在sh中生成if-子句?您需要在测试操作符中包装您的条件(以及引号以养成习惯): 在壳牌: #!/bin/sh if [ "$SHELL" = "/bin/zsh" ]; then # do your thing fi 在bash中: #!/bin/bash if [ "$SHELL" == "/bin/zsh" ]; then # just do it!

我在一个文件中包含以下内容,该文件由.bashrc和.zshrc提供。语法来自

Zsh和Bash都对此感到不安


如何在sh中生成if-子句?

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

在壳牌:

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

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

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

在壳牌:

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

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

您需要
测试
别名
[
命令:

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

您需要
测试
别名
[
命令:

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

在您提到的网站上,他们没有使用测试操作符([]),因为他们说:

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

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


在你的情况下,Seth的答案就是你想要的。

在你提到的网站上,他们没有使用测试操作符([]),因为他们说:

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

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


在你的例子中,Seth的答案正是你想要的。

你的答案告诉我,没有办法为Bash/Zsh获取相同的文件,因为我们不能在if-子句中使用相同的语法。这是对的吗?@Masi-我没有太多探讨shell的细微差别,但我认为只要你设置了shebang行(例如
#!/bin/sh
),查找文件“不应该”这是一个问题。当我从bash内部获取第一个示例时,这对我来说是有效的,没有问题。你的回答告诉我,没有办法为bash/Zsh获取相同的文件,因为我们不能在if-子句中使用相同的语法。对吗?@Masi-我没有过多地探索shell的细微差别,但我认为只要你有shebang行就行了设置(例如
#!/bin/sh
),查找文件“不应该”是一个问题。当我从bash中查找第一个没有问题的示例时,它对我有效。