Advanced tests using [[
The use of the double brackets [[ condition ]]
allows us to do more advanced condition testing but it is not compatible with the Bourne shell. The double brackets were first introduced as a defined keyword in the KornShell and are also available in bash and Zsh. Unlike the single bracket, this is not a command but a keyword. The use of the type
command can confirm this:
$ type [[
White space
The fact that [[
is not a command is significant where white space is concerned. As a keyword, [[
parses its arguments before bash expands them. As such, a single parameter will always be represented as a single argument. Even though it goes against best practice, [[
can alleviate some of the issues associated with white space within parameter values. Reconsidering the condition we tested earlier, we can omit the quotes when using [[
, as shown in the following example:
$ echo "The File Contents">"my file" $ FILE="my file" $ [[ -f $FILE && -r $FILE ]] && cat "$FILE...