2016-12-05 11 views
0

私は、このコードに問題があります。練習シェルプログラミング(初心者)

#! /bin/sh 

i=0 
while [ $i -lt 5 ] ; do  
    echo $1 
    i=$((i + 1)) 
    sleep 1 
done 

私は./boucle_arg.sh 2としてスクリプトを実行すると、私は次のエラーを取得する:

./boucle_arg.sh: line 4: [: missing `]' 
+0

問題は明確です: '[0 -lt'はそのエラーを起こします。しかし、あなたが投稿したコードは実際にはその問題を引き起こすコードだとは思わない。 – andlrc

+0

彼のコードは私のコンピュータ上で動作します。私の答えを参照してください。 –

+1

独自のバージョンを使用しているときではなく、このコードをコピーして貼り付けるときに問題が発生していることを確認してください。コードを投稿する前にコードをクリーンアップすることがあります。 while [$ i -lt 5]を変更する。 while [$ i -lt 5]にする。その意味を変えるだけで十分です。 –

答えて

0

はでシェバングを変更してみてくださいを

#!/bin/bash 

また、(すべてのシステムが/ bin /にbashを持っているわけではない)代わりに、このシェバングを使用することができます。

#!/usr/bin/env bash 

もう一つ:(独自のスクリプトのパスにスクリプトのパスを変更してください)、以下を実行して、スクリプトを実行可能にすることを忘れないでください:

chmod +x /usr/local/bin/script1 
+0

ダッシュとkshのエラーは '[:missing]'になるので、 '/ bin/sh'が'/bin/bash'にリンクしていることは間違いありません。 – andlrc

+0

OK、良い点。私は自分のコンピュータで試してみましたが、両方の方法で動作します(Debian 8.6、GNU bash、バージョン4.3.30(1))。だから、私のシステム上で私のために働くので、問題が何であるかはわかりません。 –