text: user6436: 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
  
  Will download 100 reads from the specified SRR file.
  What I would like to do is to make the second argument optional, if not specified download the whole data set!
  
  user298: 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"
  
  
original_text: 6436: <p>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.</p>
  
  <p>my script as follow:</p>
  
  <pre><code># usage : bash dump_qc.sh &lt;run id&gt; &lt;number of reads&gt;
  
  #run id variable.
  SRR=$1
  
  #maximum reads variable
  X=$2
  
  fastq-dump --split-3 -X <span class="math-container">${X} $</span>{SRR}
  </code></pre>
  
  <p>So, if I run the script</p>
  
  <pre><code>bash dump_qc.sh SRR1234 100
  </code></pre>
  
  <p>Will download 100 reads from the specified SRR file.</p>
  
  <p>What I would like to do is to make the second argument optional, if not specified download the whole data set!</p>
   298: <p>You don't need to copy your arguments into variables, you can just use <code>$1</code> directly. Anyway, this should be enough:</p>
  
  <pre><code>#!/bin/bash
  # usage : bash dump_qc.sh &lt;run id&gt; &lt;number of reads&gt;
  
  if [ -z $1 ]; then
    echo "ERROR: at least one argument need to be given!" &gt;&amp;2
    exit 1
  fi
  
  if [ ! -z <span class="math-container">$2 ]; then
      x="-X '$</span>2'"
  fi
  
  fastq-dump --split-3 "<span class="math-container">$x" "$</span>1"
  </code></pre>
  