bashのスペース


まずbashでのスペースの使用規則を見てみましょう.
1.代入演算の場合=文字の両側にスペースは使用できません.
2.コマンドとオプションの間にスペースが必要です.
3.パイプの両側のスペースはあってもなくてもよい.
スペースによるエラーの原因を見てみましょう.
1)代入演算の場合=番号の左にスペースがあります
var ="abc"
で発生したエラーメッセージは次のとおりです.
var: command not found
これはbashがこのコマンドを解釈するとvarがシステムのPATHで探すコマンドとして機能するためである.varというコマンドが見つからないと「varというコマンドが見つからない」というプロンプトに戻ると、後続の文は自然に実行できません.
2)代入演算の場合=番号の右にスペースがあります
var= "abc"

エラーメッセージは次のとおりです.
abc:command not found bashにはvar=string commandというコマンドを実行する方法があるからです
コマンドcommandは変数varの値を得るので、「abc」はcommandとしてbashで解釈され、返される情報はもちろん「abcというコマンドが見つからない」です.
3)代入演算の場合=番号程度にスペースがあります.
この場合は第1の場合と同じである.
4)コマンド間にスペースは使用されません.
よくあるのは次のような状況です.
【ifと[間にスペースがない】
if[ -n "abc" ];then echo ok;fi

エラーの原因:bashではブール値を判断する記号にすぎないと考える人が多い.実は[]bashでの役割はtestに等しく、もちろんコマンドです.
ではifは独立した命令であり,[]も同様に独立した命令である.2つのコマンドには、if[のような場合、bashは全体として理解されるため、エラーが発生します.
【[xxx]パラメータの両端にスペースがない】
if ["abc" = "abc" ];then echo ok;fi

エラーの原因:同じbashでは「abc」が何なのか理解できません.「」は記号だけでなく、コマンドであることを覚えておいてください.
【「abc」=「cba」のパラメータ間にスペースはありません】
if [ "abc"="abc" ];then echo ok;fi

エラーの原因:
=両側にスペースがあり、式であり、=両側の値が等しいか否かを判断し、bool値を返す.
=両側にスペースが欠けており、bashはabc=cbaを全体と見なし、常に真に戻ります.
パイプについては、|両側のスペースはあってもなくてもいいが、美しくするためには、両側のスペースを残すのが一般的だ.