I'm working on a project to downsample some fastqs (files that contain sequences). I'd like some insights on the bash I use to process the options. I especially feel like there's something to have a "store_true" action for the -t flag.
```
set -e

usage(){
	echo "Downsample fastqs by calling the seqtk tool
Usage example: sh seqtk_downsampling.sh -n {sample_name} -s {seed_for_random: int} -p {percentage_to_downsample_to: [0-100; 0-1]} -t {testing_flag}"
}


while getopts n:s:p::t:h option
do
	case "${option}"
	in
	n) sample_name=${OPTARG};;
	s) seed=${OPTARG};;
	p) perc_down=${OPTARG};;
    t) testing=${OPTARG};;
	h) usage
	   exit
	   ;;
	esac
done

# nothing given
if [ -z "$*" ]; then usage; exit 1; fi

# get fqs from sample name, check if they exist
if ! [ -z ${sample_name+x} ]; then
	fqs=$(find . -name "${sample_name}*fastq.gz")

	if [[ -z ${fqs} ]]; then
		current_dir=$(pwd)
		echo "Couldn't find the fqs for ${sample_name} in ${current_dir}"
		exit 1
	fi
else
	echo "No sample name given using -n flag"
	exit 1
fi

# testing mode
if [[ $testing == "true" ]]; then
	percs_down="50 60 70 80 90"
	
	for perc in $percs_down
	do
		for file in $fqs
		do
			echo $file $perc $seed
			# seqtk sample -s ${seed} ${file} ${perc}
		done
	done
	exit 0
else
	echo "Wrong argument given to -t flag"
	exit 1
fi

# given percentage and seed 
if ! [ -z ${perc_down+x} ] && ! [ -z ${seed+x} ]; then
	# format the perc
	if [[ ${perc_down} =~ ^[0][,.][0-9]*$ ]]; then
		perc=${perc_down/,/.}

	elif [[ ${perc_down} -le 100 ]] && [[ ${perc_down} -gt 0 ]]; then
		perc=$(awk -v per=$perc_down 'BEGIN {print per/100}')

	else
		echo "I wantz int between 0 and 100 (or float between 0 and 1)"
		exit 1
	fi

	for file in $fqs
	do
		echo $file $perc $seed
		# seqtk sample -s ${seed} ${file} ${perc}
	done

else
	echo "Missing required arguments -s {seed} or -p {perc_down}"
	exit 1
fi

```