Как сбросить позиционные параметры?

11

Как мне это сделать:

set foo bar baz
unset # Something else here
echo $# # Should ouput 0

Поступая set "", $#все равно будет 1 , а не 0.

Tyilo
источник

Ответы:

14

Хорошо, это было просто глупо, и я узнал, set --что сработает.

Tyilo
источник
@Gilles: Согласно справочной странице bash, set -без аргументов оставляет позиционные параметры без изменений.
Camh
@camh Я должен не согласиться. Я вижу это в руководстве: set - если после этой опции нет аргументов, то позиционные параметры не устанавливаются. В противном случае позиционные параметры устанавливаются в аргументы, даже если некоторые из них начинаются с -.
kdubs
@kdubs, для которого вы цитируете справочную страницу set --. Я использовал set -(один дефис), который говорит: «Если нет аргументов, позиционные параметры остаются неизменными».
Camh
вы правы. Я запутал их. мой экран сделал ваш - похож -
kdubs
4

Легко сбрасывать все позиционные параметры с помощью:

shift $#

Чтобы удалить первые 3 позиционных параметра:

shift 3

Сдвиг «выскакивает» из первых N позиционных параметров. Используя $ #, мы получаем общее количество позиционных параметров. Таким образом, команда выскакивает из всех позиционных параметров.

Ной
источник