私は、このコードに問題があります。練習シェルプログラミング(初心者)
#! /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 `]'
私は、このコードに問題があります。練習シェルプログラミング(初心者)
#! /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 `]'
はでシェバングを変更してみてくださいを
#!/bin/bash
また、(すべてのシステムが/ bin /にbashを持っているわけではない)代わりに、このシェバングを使用することができます。
#!/usr/bin/env bash
もう一つ:(独自のスクリプトのパスにスクリプトのパスを変更してください)、以下を実行して、スクリプトを実行可能にすることを忘れないでください:
chmod +x /usr/local/bin/script1
ダッシュとkshのエラーは '[:missing]'になるので、 '/ bin/sh'が'/bin/bash'にリンクしていることは間違いありません。 – andlrc
OK、良い点。私は自分のコンピュータで試してみましたが、両方の方法で動作します(Debian 8.6、GNU bash、バージョン4.3.30(1))。だから、私のシステム上で私のために働くので、問題が何であるかはわかりません。 –
問題は明確です: '[0 -lt'はそのエラーを起こします。しかし、あなたが投稿したコードは実際にはその問題を引き起こすコードだとは思わない。 – andlrc
彼のコードは私のコンピュータ上で動作します。私の答えを参照してください。 –
独自のバージョンを使用しているときではなく、このコードをコピーして貼り付けるときに問題が発生していることを確認してください。コードを投稿する前にコードをクリーンアップすることがあります。 while [$ i -lt 5]を変更する。 while [$ i -lt 5]にする。その意味を変えるだけで十分です。 –