

ターミナルを起動すると -bash: [: missing `]' とのメッセージが表示されました。

こちらのサイトを参考にターミナルからSublimeText2を開けるよう設定しました。  
<http://offsidenow.phpapps.jp/archives/1669>

その際、 .bash_profileを編集した際に不手際があったのか  
その後ターミナルを立ち上げると

Last login: Sun Jun 21 23:35:02 on ttys000  
-bash: [: missing `]'

というメッセージが表示されます。  
原因がわかる方いらっしゃいましたらご教示頂けると幸いです。


CC BY-SA 3.0
2015-06-21T14:56:10.453
11579
2015-06-21T16:57:37.543
10237
question
macos bash
ターミナルを起動すると　-bash: [: missing `]' とのメッセージが表示されます。


直接の回答ではないのですが、ターミナル上で、

[code]

    $ bash -l -x
    
[/code]

を実行するとエラーが発生する場所が特定できるかと思います。ご参考までにどうぞ。


CC BY-SA 3.0
2015-06-21T15:43:58.720
11581
2015-06-21T15:43:58.720
11579
answer


シェルの `test` コマンドには 見た目のために、"`[`" という別名があります。  
`test` が "`[`" という名前で呼ばれた時は、引数の最後に "`]`" を指定しなければいけない事になっています(見た目のためです)。  

[code]

    [ 1 -eq 1 ]
    
[/code]

は

[code]

    test 1 -eq 1
    
[/code]

と同じ意味ですが、下記のように "`]`"を省略すると表題のエラーになります。

[code]

    [ 1 -eq 1
    # エラーになります -> bash: [: missing `]'
    
[/code]

.bash_profile の編集でエラーが発生したのであれば、"`[`" に対応する "`]`" を消してしまったか、"`[`"
を入れるべきで無い所に入れてしまったのでしょう。


CC BY-SA 3.0
2015-06-21T16:27:17.117
11583
2015-06-21T16:27:17.117
3054
11579
answer


回答は書かれているので、補足として、

[code]

    [ 1 -eq 1]
    
[/code]

これはエラーになります。1 と ] の間に空白がないためです。  
] は単独の引数として書くようにしましょう。


CC BY-SA 3.0
2015-06-21T16:57:37.543
11584
2015-06-21T16:57:37.543
5288
11579
answer