我在一个由.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 -praine?

有帮助吗?

解决方案

您需要将病情包裹在测试操作员中(以及报价以获取习惯):

在外壳中:

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

在bash中:

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

其他提示

你需要 test 别名 [ 命令:

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

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

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

if必须遵循“布尔语句”,如果此语句返回0,则实际执行了“ then” ...

就您而言,塞思的回答就是您要寻找的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top