Как удалить загрузочную запись rEFInd?

#! /bin/sh -
i=1
for arg do
  printf '%2d: %s\n' "$i" "$arg"
  i=$((i + 1))
done

То есть, вместо того, чтобы перебирать индексы, перебирайте аргументы и увеличивайте индекс отдельно.

Несколько замечаний по вашему подходу:

  • оставление расширения параметра без кавычек в контексте списка имеет особое значение, вы почти никогда не захотите этого делать .

  • echoнельзя использовать для вывода произвольных данных .

  • В наши дни следует избегать `...`формы подстановки команд. Вместо этого используйте $(...).

  • Поскольку подстановка команд без кавычек также вызывает split+glob, ее следует использовать с осторожностью. Здесь вы используете часть split , что означает, что у вас есть зависимость от текущего значения $IFS. Вывод seqне будет включать подстановочные знаки, поэтому у вас не будет проблем с частью glob .

  • seqне является стандартной командой и встречается не во всех системах. Зацикливаться на числах в любом случае не лучший подход, так как это означает сохранение всего вывода в памяти и его разделение (, что приводит к дополнительным копиям в памяти ), а это означает запуск отдельной утилиты в отдельном процессе, даже если оболочка имеет встроенную поддержку для этого.

  • Если вы не поместите ни -bang(#! /path/to/interpreter -первую строку ), единственная гарантия, которую вы получите, это то, что она будет интерпретирована оболочкой POSIX sh(в более старых версиях. систем, которые могут быть даже оболочкой Bourne (не -POSIX )), поэтому вам необходимо убедиться, что используемый вами синтаксис совместим с POSIX. Даже в системах, где shпредоставляется bash, не все расширения bashвключены при работе с sh.

    Приведенный выше код совместим с POSIX (и также будет работать в bash), но не совместим с Bourne (из-за $((...))синтаксиса арифметического расширения, который не был доступен в оболочке Bourne ). На Solaris 10 и старше,вам нужно изменить -взрыв на #! /usr/xpg4/bin/sh -, чтобы получить (в основном )POSIX -совместимый интерпретатор

0
13.08.2021, 19:17
0 ответов

Теги

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