Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Incorporating (( $+commands[foo] )) into a larger "if" statement



if [[ $+commands[foo] -ge 1 && ... ]]; then
  echo  yes
fi

OR

if [[ (( $+commands[foo] )) && ... ]]; then
  echo yes
fi

OR (the very straightforward way)

if (( $+commands[foo] )); then
  if [[ ... ]]; then
   echo yes
  fi
fi

Also: Please note, that '[[' should be used instead of '[', for the
former is way saner in its behavior.

- René

Am 06.08.2015 um 00:00 schrieb TJ Luoma:
> OK, so I am apparently mis-understanding something or I've forgotten
> something about how this works.
> 
> Some time ago, someone from the list suggested that I could do this instead
> of using `which`
> 
> if (( $+commands[foo] ))
> then
> 
> echo yes
> 
> fi
> 
> 
> that works fine. However, what I am trying to do now is check for other
> things at the same time.
> 
> For example, if I want to check that the command `growlnotify` is found in
> the $PATH and I want to check to see if `pgrep` finds 'Growl' is running.
> In that instance I would use this to check `pgrep`:
> 
> if [ "`pgrep -x Growl`" != "" ]
> then
> echo Not Running
> else
> echo Is Running
> fi
> 
> but I can't figure out how to put that together with
> 
> if (( $+commands[growlnotify] ))
> 
> OR, if I want to see if the command `bbedit` is found, and I want to check
> that a variable $APP is equal to "bbedit". I would do the latter
> 
> if [ "$APP:l" == "bbedit" ]
> then
> echo yes
> else
> echo no
> fi
> 
> 
> Any help would be appreciated.
> 
> Thanks!
> 
> TjL
> 



Messages sorted by: Reverse Date, Date, Thread, Author