シェルスクリプト:構文エラー:ループ変数のエラーソリューションのための悪い(RPM)

Linuxのミントは、単純なシェルスクリプトを記述する場合は、計算値+ 1 + 2 + 3 ...... 100はfor..do..done構造、「SH -n xxx.sh」構文検出を実行した結果を使用して常に与えられているが、PC上で適切に実行することができます。
スクリプト:
#!/bin/bash
#information
 
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
 
read -p "Please input a num " num
sum=0
for ((a=0; a<=$num; a++))
do 
sum=$(($sum + $a)) done echo "the sum is ==> $sum" exit 0
エラー次のように:
Syntax error: Bad for loop variable
 分析:Ubuntuの6.10以降は、Ubuntuのは、以前のデフォルトのbashシェルは、ダッシュシェルになった置き換わります。ダウン/ binに/ shのリンク/ binに/ダッシュではなく、伝統的な/ binに/ bashのためにその性能。
allen@allen-lql ~/workspace/script $ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Aug 12 14:29 /bin/sh -> dash
だから、SHを使用している場合は、ダッシュの実際の使用の検出を行い、そしてダッシュはC言語形式で記述され、このループはサポートされていません。
ソリューション:1は、デフォルトのシェルはbashに変更します。(bashは循環のためのC言語形式をサポートしています)
sudo dpkg-reconfigure dash

選択したオプションではありません

2。このような実行の問題はありません

bash test.sh

我々はそれを行う方法を、そのような方法のSHのtest.shに実行したい場合は、その3?

コードを変更します。

私のために、配列`で10 ` おはようエコー、これがある私は、プログラムをシェル$。完了

この時間は、あなたが、その後のsh test.shを実行し、それがエラーを報告しません。

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/lh03061238/p/11106581.html