title: Negating multiple conditions in Bash
body: <p>I realize this is a simple question, but I am finding a hard time getting an answer due to the finnicky syntax requirements in bash. I have the following script:</p>
  
  <pre><code>if ! [ [ -z "$1" ] || [ -z "$2" ] ]; then
    echo "both arguments are set!"
  fi
  </code></pre>
  
  <p>I get the following output when I run it without arguments:</p>
  
  <blockquote>
  <pre><code>./test: line 3: [: -z: binary operator expected 
  both arguments are set!
  </code></pre>
  </blockquote>
  
  <p>I am not expecting any output - neither argument is set. What am I doing wrong?</p>