> Has been a while since I had to ask a question on this list! > > I was having trouble understanding how the compound command [[ and the > builtin [ commands were different from each other and why/when would it be > better to choose one over the other. In order to answer your question, I joined #bash at irc.freenode.net and used [ and [[ command of its bot. (It is used to keep a FAQ about bash and shell scripting). I could use help [ and help [[ at shell prompt, but this doesn't provide links for further reading :) Look: <dark> [ <greybot> [ is NOT part of the `if' syntax. It's a normal, ordinary COMMAND. The `if' just checks its exit status. See ''help test'', http://mywiki.wooledge.org/BashGuide/Practices/BashTests and http://partmaps.org/era/unix/award-example-backticks.html <dark> [[ <greybot> [[ is a bash keyword similar to (but more powerful than) the [ command. See http://mywiki.wooledge.org/BashFAQ/031 and http://mywiki.wooledge.org/BashGuide/Practices/BashTests Unless you are scripting for POSIX sh we recommend [[. [ is from the original unix shell. It's portable between shells, and acessible if you are using /bin/sh as your shell, for example. It's equivalent to test, but you have to put a ] in the end. so: if test -e /; then echo a; fi is the same as if [ -e / ]; then echo a; fi on my system, it's a shell builtin. but here it is available as a regular program too, at /usr/bin/[, so this has the same result as if /usr/bin/[ -e / ]; then echo a; fi this would spawn another process, pass -e, /, ] as parameters, and watch for the return value: 0 means true, nonzero means false. (if you know C, the parameters would be inserted in argc/argv arguments of main, and the return value would be the int it returns). that's how if works (for non-builtins). [[ is different from test, and isn't available at all shells. it is more powerful though. you don't need to quote variables, for example. some advise that you use [[ when you expect to use bash only (or ksh, ..), and [ if you need a portable shell script. (ps: also note this is not strictly linux-related: linux works at a lower level. this was actually a shell question. ^^) -- Elias Gabriel Amaral da Silva <tolkiendili@xxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-newbie" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.linux-learn.org/faqs