Im trying to write a script where an optional input of -X flag can be used, or if that info is not available download all reads.

my script as follow:

# usage : bash dump_qc.sh <run id> <number of reads>

#run id variable.
SRR=$1 #maximum reads variable X=$2

fastq-dump --split-3 -X $${X}$${SRR}


So, if I run the script

bash dump_qc.sh SRR1234 100


What I would like to do is to make the second argument optional, if not specified download the whole data set!

You don't need to copy your arguments into variables, you can just use $1 directly. Anyway, this should be enough: #!/bin/bash # usage : bash dump_qc.sh <run id> <number of reads> if [ -z$1 ]; then
echo "ERROR: at least one argument need to be given!" >&2
exit 1
fi

if [ ! -z $$2 ]; then x="-X '$$2'"
fi

fastq-dump --split-3 "$$x" "$$1"

• Thanks terdon for your solution. Im really beginner in bash programming. Could you please be more verbose and explain your code? :) – Skepto18 Nov 19 '19 at 19:32