9

if [[ -s log.txt ]];

What does -s mean? I know -z means zero sized string. I cannot find any documentation on -s.

What does [] or [[]] mean, while writing an if condition. I have used if without [] or [[]] and it worked fine.

Tarun Maganti
  • 227
  • 1
  • 2
  • 6

2 Answers2

20

The -s test returns true if

[...] if file exists and has a size greater than zero

This is documented in the bash manual, and also in the manual for the test utility (the test may also be written if test -s file; then).

For [ ... ] and [[ ... ]], see: Bash - If Syntax confusion

Kusalananda
  • 333,661
0

-s FILE:- FILE exists and has a size greater than zero.

The [[ ... ]] part allows to test a condition using operators. Think of it as an if statement. In your example, you're using the -s operator, which tests that the referenced file is not empty.