Bash.Builtin.Test (Bash v0.3.0)

Copy Markdown View Source

test [expr]

Shared helper functions for test command and test expression builtins.

Exits with a status of 0 (true) or 1 (false) depending on the evaluation of EXPR. Expressions may be unary or binary. Unary expressions are often used to examine the status of a file. There are string operators as well, and numeric comparison operators.

File operators:

  • -a FILE - True if file exists.
  • -b FILE - True if file is block special.
  • -c FILE - True if file is character special.
  • -d FILE - True if file is a directory.
  • -e FILE - True if file exists.
  • -f FILE - True if file exists and is a regular file.
  • -g FILE - True if file is set-group-id.
  • -h FILE - True if file is a symbolic link.
  • -L FILE - True if file is a symbolic link.
  • -k FILE - True if file has its "sticky" bit set.
  • -p FILE - True if file is a named pipe.
  • -r FILE - True if file is readable by you.
  • -s FILE - True if file exists and is not empty.
  • -S FILE - True if file is a socket.
  • -t FD - True if FD is opened on a terminal.
  • -u FILE - True if the file is set-user-id.
  • -w FILE - True if the file is writable by you.
  • -x FILE - True if the file is executable by you.
  • -O FILE - True if the file is effectively owned by you.
  • -G FILE - True if the file is effectively owned by your group.
  • -N FILE - True if the file has been modified since it was last read.
  • FILE1 -nt FILE2 - True if file1 is newer than file2 (according to modification date).
  • FILE1 -ot FILE2 - True if file1 is older than file2.
  • FILE1 -ef FILE2 - True if file1 is a hard link to file2.

String operators:

  • -z STRING - True if string is empty.
  • -n STRING - True if string is not empty.
  • STRING - True if string is not empty.
  • STRING1 = STRING2 - True if the strings are equal.
  • STRING1 != STRING2 - True if the strings are not equal.
  • STRING1 < STRING2 - True if STRING1 sorts before STRING2 lexicographically.
  • STRING1 > STRING2 - True if STRING1 sorts after STRING2 lexicographically.

Other operators:

  • -o OPTION - True if the shell option OPTION is enabled.
  • ! EXPR - True if expr is false.
  • EXPR1 -a EXPR2 - True if both expr1 AND expr2 are true.
  • EXPR1 -o EXPR2 - True if either expr1 OR expr2 is true.
  • arg1 OP arg2 - Arithmetic tests. OP is one of -eq, -ne, -lt, -le, -gt, or -ge.

Arithmetic binary operators return true if ARG1 is equal, not-equal, less-than, less-than-or-equal, greater-than, or greater-than-or-equal than ARG2.