← Back to context

Comment by sshine

5 months ago

Then [ shadows the sh executable aliased from ‘test’ so that you can no longer do

  [ some conditional ] && ...

But have to write

  test some conditional && ...

That's true.

In shells, "test" and "[" are often used after "if", as for example

  if test -f "some_file"
    do_something
  fi

  if [ "$FOO" != "" ]
    do_something_else
  fi

Schemesh does not have a shell builtin "if", you switch to Scheme for that:

  (if (file-regular? "some_file')
    (sh-run {do_something}))

Thus the need for "test" and its alias "[" is reduced.

Also, "test" implements a mini-language full of one-letter operators: `-f FILE` `COND1 -a COND2` `COND1 -o COND2` etc.

I really don't miss it, as I find the equivalent in Scheme to be more readable - and of course more general

  (file-regular? "FILE")
  (and COND1 COND2)
  (or COND1 COND2)

etc.