Описание тега moreutils-parallel
Разница заключается в том, что две переменные будут расширены.
$@
расширяется, так что каждый аргумент отделяется \0NUL
и рассматривается индивидуально. Таким образом, учитывая фу арг1 арг2 значение arg3
, $@
станет арг1\0arg2\0arg3
. В частности, каждый аргумент защищен от расщепления, так что, если арг1
были Василий Пупкин
, если дальнейшая обработка будет сделано, это будет рассматриваться как Василий Пупкин
, а не фу
и бар
отдельно.
$*
расширяет так, что каждый аргумент отделяется первый символ МФС
, внутренний разделитель полей. По умолчанию МФС
имеет место в качестве своего первого персонажа, поэтому расширение $*
обычно такой же, как $@
. Однако, если я сделаю, скажем, ИФС=:
, то $*
будет расширяться, чтобы аргумент1:аргумент2:значение arg3
.
Использование вы поместите их в зависимости от ситуации. Например, вот такой трюк, чтобы быстро получить сумму множества чисел:
сумма () (
ИФС=+
команда echo $(( $* ))
)
Затем:
$ сумма 1 2 3
6
Этот трюк, конечно, очень хрупкая.