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


11

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

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

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

Ответы:


14

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


@Gilles: Согласно справочной странице bash, set -без аргументов оставляет позиционные параметры без изменений.
Camh

@camh Я должен не согласиться. Я вижу это в руководстве: set - если после этой опции нет аргументов, то позиционные параметры не устанавливаются. В противном случае позиционные параметры устанавливаются в аргументы, даже если некоторые из них начинаются с -.
kdubs

@kdubs, для которого вы цитируете справочную страницу set --. Я использовал set -(один дефис), который говорит: «Если нет аргументов, позиционные параметры остаются неизменными».
Camh

вы правы. Я запутал их. мой экран сделал ваш - похож -
kdubs

4

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

shift $#

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

shift 3

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.