题
我在一个由.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” ...
就您而言,塞思的回答就是您要寻找的。
不隶属于 StackOverflow