2009-07-14 6 views
0

私は、.bashrcと.zshrcの両方をソースとするファイルに次のものを持っています。構文はsiteです。Shのif節を作るには

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節を作る方法はありますか?

+0

ありがとうございました! –

答えて

4

あなたはテスト演算子(だけでなく、習慣に取得する引用符)で、あなたの条件をラップする必要があります。

シェルの場合:bashで

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

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

あなたの答えは、if -clauseで同じ構文を使うことができないので、Bash/Zshのために同じファイルをソースする方法がないことを示唆しています。これは正しいですか? –

+0

@マシ - 私はシェルのニュアンスをあまり探っていませんが、シバンラインが設定されている限り(例えば '#!/ bin/sh')、ファイルのソースは問題ではないはずです。私が問題のないbashの中から最初の例を得ると、私にとってはうまくいく。 – seth

2

testエイリアス[コマンドが必要です。

彼らが言うので、あなたが言及したウェブサイトで
0

、彼らはテスト演算子([])を使用していない:

例えば、それは に遭遇した場合、それが正常に を実行し、1ならば、猫は0を返します。 「ブール声明」が続くと、この文は「その後」、実際に...あなたの場合

を実行され、0を返した場合、セスの答えが「何でなければならない場合、エラー

ザ・再探しています。