2016-07-05 11 views
-1

私はカレンダーを画面に表示したいとき、スクリプトは私に条件付きのエラーを表示しています - それ以外は - しかし私は理由を知らない。私はそれが大丈夫だろうと思う。私のBashコードでは何が起こっていますか?

# !/bin/bash 
rm --f calen 
mostrar = 0 
echo "agrega un mes" 
read mes 
echo "agrega un año" 
read year 
echo "Agregar [1] para mostrar las dos primeras semanas, o [2] para mostrar las ultimas dos semanas" 
read mostrar 
if[$mostrar = 1] then 
    cal -m $mes $year >> calen 
    head -n 4 calen 
else 
    cal -m $mes $year >> calen 
    head -n 2 calen 
    tail -n 3 calen 
fi 
+2

あなたは '[$ mostrar = 1];を試しましたか?それからセミコロンで? – TessellatingHeckler

+0

はい、私はなぜ変わっても[$ mostrar = 1]が動作するかわかりません –

+0

"if文がbashで動作しない"などのより意味のある件名を与えてください –

答えて

4

この行、mostrar0であること(単なる例示のため)と仮定:

if[$mostrar = 1] then 

"は、引数=でコマンドを実行しif[01]、およびthen" を意味します。 if[0というコマンドがないので、これは爆発します。

これのほとんどは、コマンドのさまざまなコンポーネントの周りに空白を追加することで修正できます。さらに、thenの前にセミコロンまたは改行が必要で、にすると、ファイル拡張や単語分割(どちらも奇妙な結果につながる可能性があります)を防ぐために二重引用符で囲んで$mostrarを二重引用符で囲む必要があります。従って:

if [ "$mostrar" = 1 ] ; then 
関連する問題