Расширение пути, иначе говоря, расширяет одно слово оболочки на несколько.В вашем случае
./remove r*
полностью идентичен выполнению
./remove remove remove_engine restore remove remove_w restore_engine
Как вы обнаружили, $1
будет remove
, потому что это первый аргумент.Остальные файлы являются отдельными позиционными параметрами, поэтому $2
будет remove_engine
, а $3
будет restore
.
Для обработки всех аргументов вы используете "$@"
, либо вцикл:
for file in "$@"
do
printf 'One of the matches was: %s\n' "$file"
done
или просто непосредственно в командах, которые также принимают несколько параметров:
# Delete all matches
echo rm "$@"