スクリプトを実行すると./test.sh 100
、スレッドを使用しているため、出力 100 が得られません。期待される出力を得るにはどうすればよいですか? (変わらなくていいtest.sh
けど。)
test.sh
#!/bin/bash
FILE="number.txt"
echo "0" > $FILE
for (( x=1; x<=$1; x++)); do
exec "./increment.sh" $FILE &
done
wait
cat $FILE
インクリメント.sh
#!/bin/bash
value=(< "$1")
let value++
echo $value > "$1"
編集
さて、私はこれを試しました:
#!/bin/bash
flock $1 --shared 2>/dev/null
value=(< "$1")
let value++
echo $value > "$1"
現在、私が使用すると常に98 99のようなものが得られ、./test.sh 100
うまく機能せず、修正方法がわかりません。