Tests & Conditionals

Conditionals

if [ -f /etc/passwd ]; then
  echo 'exists'
elif [ -d /tmp ]; then
  echo 'dir'
else
  echo 'neither'
fi
TestTrue when
-f filefile exists (regular)
-d dirdirectory exists
-e pathpath exists (any type)
-r/-w/-xreadable/writable/executable
-z strstring is empty
-n strstring is non-empty
n1 -eq n2numbers equal (-ne -lt -le -gt -ge)
s1 = s2strings equal (!= not equal)
$ [ 5 -gt 3 ] && echo yes
yes
Exam trap: Use -eq/-lt/-gt for numbers, =/!= for strings. [ "$a" = "$b" ] - quote variables to survive empty values and spaces.