В моем сценарии я использую awk , параметры жестко закодированы, но имя файла - нет, поэтому у меня есть awk options $1 Если бы я хотел версию с двумя файлами, я бы сделал awk options $1 $2 .

Как это сделать для произвольного количества файлов? ($1 до "$last").

1 ответ1

2

Вы можете изменить дизайн своего скрипта, чтобы использовать "$@" ; или вы можете проверить $# и запустить свои команды соответственно.

Справочное руководство Bash гласит:

$@ Расширяется до позиционных параметров, начиная с единицы. Когда раскрытие происходит в двойных кавычках, каждый параметр раскрывается в отдельное слово. То есть "$@" эквивалентно "$1" "$2" … . […] Когда нет позиционных параметров, "$@" и $@ расширяются до нуля (то есть они удаляются).

awk options "$@"

Если вам нужно использовать несколько параметров командной строки, которые не являются именами файлов, взгляните на встроенную функцию shift .

$# Расширяется до количества позиционных параметров в десятичном формате.

Используйте его с некоторыми условными выражениями, если вам нужно вызывать разные команды, в зависимости от этого числа.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .