#!/bin/bash # See usage() for detailed description # # Depends on >=bash-2.05 for arrays # # Author: Donnie Berkholz deck_file=${1} usage() { echo echo " card_count DECKLIST" echo echo "Check a *.dec file for deck size and sideboard size." echo echo "Example to check all *.dec files in a directory for non-60/non-15:" echo "for i in *.dec; do echo \$i; card_count \$i | grep -v -e 60 -e 15 \\" echo " | while read line; do echo \" \$line\"; done; done" echo echo "Relies on formatting of sideboard cards as 'SB: cardname'" exit 1 } if [[ $# -ne 1 ]]; then usage fi # Read .dec file into array declare -a deck lineno=0 while read line; do deck[${lineno}]="${line}" (( lineno++ )) done < ${deck_file} lines=${lineno} # Check for deck and sideboard for (( lineno=0; lineno<=lines; lineno++ )); do if [[ ${deck[${lineno}]:0:1} = [0-9] ]]; then deck_lines="${deck_lines} ${lineno}" elif [[ ${deck[${lineno}]:0:2} = SB ]]; then sideboard_lines="${sideboard_lines} ${lineno}" fi done # Count cards for lineno in ${deck_lines}; do card_count=${deck[${lineno}]%% *} (( deck_count += card_count )) done for lineno in ${sideboard_lines}; do sideboard_line=${deck[${lineno}]:4} card_count=${sideboard_line%% *} (( sideboard_count += card_count )) done echo Deck size: ${deck_count} echo Sideboard size: ${sideboard_count}