Или вы можете запустить дескриптор файла
exec {counterfd}<~/counter.txt
flock -x -w 5 "$counterfd"
COUNTER=$(cat ~/counter.txt)
COUNTER=$(( COUNTER +1 ))
echo "$COUNTER" >~/counter.txt
exec {counterfd}<&-
Это также имеет то преимущество, что позволяет вам использовать переменную счетчика напрямую, в отличие от подходов, основанных на подшивках.