title: Why the shell script gives me a too many argument error?
body: <pre><code>#! /bin/bash
  
  if [ !\(-f new.bash -o -d new.bash\) ]
  then
      echo "Neither"
  else
      echo "yes"
  fi
  </code></pre>
  
  <p>it works but leaves an error:</p>
  
  <pre><code>/file_exist_or_not.bash      
  ./file_exist_or_not.bash: line 3: [: too many arguments
  yes
  </code></pre>
  
  <p>BTW, Why the inner parenthesises needs to be escaped?</p>