Объясните этот код Bash (одна строка)

Можно настроить ключи SSH и поместить открытый ключ в корень ~root/.ssh/authorized_keys2 файл на newserver. Тем путем можно сделать весь процесс как корень.

Alternativly можно установить пароль корня через:

sudo passwd root

Но ключи SSH более безопасны и (по моему скромному мнению) более удобны.

2
задан 21 December 2010 в 00:36
2 ответа

Это означает использование $PIDFILE если $PIDFILE определяется, или /var/run/service.pid если $PIDFILE не определено.

Запуск с новой оболочки:

$ echo ${PIDFILE-/var/run/service.pid}
/var/run/service.pid

Теперь определите PIDFILE:

$ PIDFILE=/var/run/myprogram.pid
$ echo ${PIDFILE-/var/run/service.pid}
/var/run/myprogram.pid

Это - с былых времен Оболочки Bourne sh страница справочника.

   ${parameter-word}
          If parameter is set then substitute its value;
          otherwise substitute word.

Другая форма, которую Вы, возможно, уже видели, ${parameter:-word}. Это подобно, но ведет себя по-другому если parameter установлен на пустую строку.

   ${parameter:-word}
          Use Default Values.  If parameter is unset or null,
          the expansion of word is substituted.  Otherwise,
          the value of parameter is substituted.

Продемонстрировать:

$ set | grep NOSUCHVAR    # produces no output because NOSUCHVAR is not defined
$ echo ${NOSUCHVAR-default}
default
$ echo ${NOSUCHVAR:-default}
default

$ NULLVAR=
$ set | grep NULLVAR      # produces output because NULLVAR is defined
NULLVAR=
$ echo ${NULLVAR-default}

$ echo ${NULLVAR:-default}
default

Отметьте как ${NULLVAR-default} расширяется до пустой строки, потому что NULLVAR определяется.

Для полного объяснения, выполненный "удар человека" и поиск Расширения Параметра путем ввода "/Расширения Параметра".

$ {слово параметра} укусил, скрыт в этом объяснении:

    When  not  performing  substring  expansion, using the forms documented below,
    bash tests for a parameter that is unset or null.  Omitting the colon results
    in a test only for a parameter that is unset.

Благодаря Dennis для исправления о наборе по сравнению с пустым указателем.

10
ответ дан 3 December 2019 в 08:44

Mikel:

не был должен это быть pidfile=${PIDFILE:-/var/run/service.pid} путем Вы объясняете?

0
ответ дан 3 December 2019 в 08:44

Теги

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