Можно ли отключить переменную $ 1?

Если вы отредактируете файл sources.list , чтобы отслеживать стабильный , ваши пакеты не будут быть пониженным. На практике вы не увидите никаких обновлений (включая исправления безопасности) до тех пор, пока не будет выпущен Debian 9 - а затем вы внезапно обновитесь ... Вы не можете вернуться к стабильной стабильной ] релиз из тестирования , стабильный «догоняет» тестирование только при выходе следующей версии.

В вашей ситуации я бы просто остановился на тестировании . Сейчас мы постепенно замораживаем дистрибутив в рамках подготовки к выпуску Debian 9, вероятно, не стоит беспокоиться о возвращении на Debian 8. Вам все равно следует отредактировать свой sources.list , чтобы отслеживать stretch , чтобы вы автоматически переключались на отслеживание стабильной при выпуске Debian 9.

7
11.07.2017, 14:02
4 ответа

Нет, по крайней мере, напрямую. Этот синтаксис должен работать, но выдает ошибку:

$ set bon jour
$ echo $1 $2
$ unset 1
1: not a valid identifier

unset $variable обычно является ошибкой, а unset variable было тем, что предполагалось. К сожалению, здесь это не работает.

4
27.01.2020, 20:13

Помимо всех правильных технических ответов, вы должны заметить, что в вашем вопросе есть логическая ошибка. $1, $2,... - это не значения именованных переменных, таких как $A, $B,..., а 1-е, 2-е,... значение списка значений. Возможно, первое значение списка — пустая строка, но нет смысла говорить, что мой список не имеет первого значения. Если список не имеет первого значения, то он вообще не имеет значения, поэтому это пустой список.

Таким образом, вы не можете «сбросить» первое значение списка. Вы можете удалить только первое значение из списка. Тогда прежнее 2-е значение списка теперь является 1-м значением списка, прежнее 3-е теперь является 2-м и так далее. Это именно то, что делает оператор сдвига.

6
27.01.2020, 20:13

Вы можете очистить его, переустановив параметры на: "пустая строка", за которой следуют "параметры, начиная со 2-го":

$ set -- 1 2 3 4
$ printf -- "->%s<-\n" "$@"
->1<-
->2<-
->3<-
->4<-
$ set -- "" "${@:2}"
$ printf -- "->%s<-\n" "$@"
-><-
->2<-
->3<-
->4<-
16
27.01.2020, 20:13

Вы не можете отключить его, но можете сдвинуть $2 в $1:

$ set bon jour
$ echo "$1$2"
bonjour

$ shift
$ echo "$1$2"  # $2 is now empty
jour

shift сдвинет все позиционные параметры на единицу шаг ниже. Это обычное дело, например. циклы синтаксического анализа командной строки (которые не используют getopt/getopts) для сдвига позиционных параметров на каждой итерации при многократном изучении значения $1 . Редко требуется сбросить позиционный параметр.

Между прочим, unset принимает переменную name, а не ее значение, поэтому unset $1 фактически сбросит переменную bon. ] (если он был установлен ранее).

21
27.01.2020, 20:13

Теги

Похожие вопросы