Advanced test using [[
The use of the double brackets [[ condition ]]
allows us to do more advanced condition testing but is not compatible with the Bourne Shell. The double brackets were first introduced as a defined keyword in the korn shell 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 [[
Whitespace
The fact that [[
is not a command is significant where whitespace 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 whitespace 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"
We...