Используя оболочку 'printf', где строка формата находится в переменной и не имеет фиксированного числа владельцев полей?

Простой способ попробовать - инициировать процесс (ssh -MS ssh.sock ), удалить сокет и попробовать, как он будет себя вести. При рабочем соединении:

$ ssh -S ssh.sock -O check <my-server>
Master running (pid=24314)
$ echo $?
0

При отсутствии сокета вы получите что-то вроде этого:

$ ssh -S ssh.sock -O check <my-server>
Control socket connect(ssh.sock): No such file or directory
$echo $?
255

Я считаю, что обработка кода возврата - это правильный способ.

Есть ли случай, когда код возврата будет ненулевым, но сам процесс будет жив?

Как и в предыдущем примере, когда сокет по какой-то причине удаляется, ваше соединение живо, но вы не можете проверить его "снаружи" и не можете подключить к нему новые сессии.

0
07.08.2018, 10:17
2 ответа

Вы можете попробовать заполнить строки формата спецификаторами нулевой длины до максимального ожидаемого количества параметров:

template_get_entry='get_entry:%s %0.0s'
1
28.01.2020, 02:31

Что вы можете сделать, так это получить аргумент строки формата, убрать его из списка аргументов, а затем использовать$@:

call_api () {
    fmt=$1
    shift

    apicmd=$( printf "$fmt" "$@" )

    #...
}
1
28.01.2020, 02:31

Теги

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