特定のIDでコマンドを実行する必要があるbashスクリプトを作成しています。ただし、1つのIDは10回しか使用できません。それ以降はIDを変更する必要があります。
たとえば、3つのIDがあります。
ID=(abcd1
abcd2
abcd3)
echo $ID
スクリプトを10回実行すると、ID値をabcd2に変更する必要があります。 10回以降は、ID値をabcd3に変更する必要があります。
Googleで検索してみましたが、似たようなものは見つかりませんでした。
編集:この場合、jsonを使用するアイデアが浮かんだので、別の記事を作成しました。ここ
ベストアンサー1
スクリプトにカウンターを置くことができます。次に、スクリプトが実行されるたびにそれを更新します。
#!/usr/bin/env bash
_list=(
abc
def
ghi
)
_list_index=0 # autoupdate
_list_usage_counter=0 # autoupdate
max_uses=10
if [ $((_list_usage_counter)) -eq $((max_uses - 1)) ] ; then
# reset counter
sed -Ei \
-e "s/^(_list_usage_counter)\=${_list_usage_counter}( # autoupdate)\$/\1=0\2/" \
"$(readlink -f "$0")"
_list_usage_counter=0
# update list index
sed -Ei \
-e "s/^(_list_index)\=${_list_index}( # autoupdate)\$/\1=$((++_list_index))\2/" \
"$(readlink -f "$0")"
fi
# make sure index is not out of bounds
if [ $_list_index -ge ${#_list[@]} ] ; then
echo "no more items to use"
exit
fi
# ... do stuff ...
echo "item: ${_list[_list_index]}"
echo "used: $((_list_usage_counter + 1))"
# update counter
sed -Ei \
-e "s/^(_list_usage_counter)\=${_list_usage_counter}( # autoupdate)\$/\1=$((++_list_usage_counter))\2/" \
"$(readlink -f "$0")"