2011-12-22 9 views

答えて

5

あなたは[$iの代わりに[ $iが必要です。

これは、が組み込みコマンドであり、$iが最初のパラメータである必要があるためです。コマンドとパラメータの間にスペースがない場合、シェルは[$iコマンドを検索し、実行後には[0コマンドが実行されていないと評価します。

+0

があります。私はそれをこのように書く傾向があります "if [$ x comp $ y]; then"私は私のことが好き、そして同じ行に好きです。 – MJB

+0

いいえ、 '[' 'は組み込みコマンドではありません:' test'コマンドへの(sym)リンクです。実際、 'test'と' [''の間の唯一の違いは、 '['形式は最後の引数として ']'を必要とすることです;)あなたのシェルで 'which ['を試してみてください。 – fge

+1

@fge:シェルの実装に依存します。古いOSではシンボリックリンクだった。すべての現代のシェルにはそのような組み込み関数があります。参照するには 'type 'を実行してください。 –

1

'['と ']の前にスペースが必要です。 '['はコマンドです。

関連する問題