別のスクリプトで実行されたときにbashカウンタースクリプトが正しく機能するようにするにはどうすればよいですか? [コピー]

別のスクリプトで実行されたときにbashカウンタースクリプトが正しく機能するようにするにはどうすればよいですか? [コピー]

wgetを使用し、増分変数と呼ばれるファイルに出力を保存するスクリプトがあります。

カウンター.sh:

number=1
for i in $(cat file)
do
wget $i -S -O $number.html 2>&1
((number++))

sleep 1   
echo 'done'

done

コマンドラインからスクリプトを実行でき、正常に実行されます。ただし、別のスクリプトで実行すると、次のようになります。

スクリプト2:

./counter.sh

次の結果が表示されます。

scripts/counter.sh: 5: scripts/counter.sh: number++: not found
done
scripts/counter.sh: 5: scripts/counter.sh: number++: not found
done
scripts/counter.sh: 5: scripts/counter.sh: number++: not found
done
scripts/counter.sh: 5: scripts/counter.sh: number++: not found
done

何らかの理由で別のスクリプト内で実行すると、Counter ++は機能しません。この問題をどのように解決できますか?

答え1

number++シェルが変数に対して算術演算を実行するのではなく、変数に対して演算を試みているようですnumber。これは++、シェルがこの構文をサポートしていないためです。

この問題を解決するには、スクリプトを実行するシェルを指定できます。これを行うには、次を追加します。

#!/bin/bash

スクリプトの最初の行に。

答え2

使用

#!/bin/bash

または

bash counter.sh

または互換性があるようにしてください。

#!/bin/sh

一般的にIDEを使用するか、コードをhttps://www.shellcheck.netそのような問題を避けるために。

関連情報