This question concerns a bash script that is run in automator osx. I am using automator actions to get and filter a bunch of file references from the finder. Then I append t
I have used this bash one-liner before
set -- "${@:1:$(($#-1))}"
It sets the argument list to the current argument list, less the last argument.
How it works:
$# is the number of arguments$((...)) is an arithmetic expression, so $(($#-1)) is one less than the number of arguments.${variable:position:count} is a substring expression: it extracts count characters from variable starting at position. In the special case where variable is @, which means the argument list, it extracts count arguments from the list beginning at position. Here, position is 1 for the first argument and count is one less than the number of arguments worked out previously.set -- arg1...argn sets the argument list to the given argumentsSo the end result is that the argument list is replaced with a new list, where the new list is the original list except for the last argument.