Форматирование Printf с переменным форматом - на что ссылается этот var?

Существует 3 способа выполнить отправку SMS-сообщения с сервера и/или приложения.

  1. Установите свой собственный шлюз

    Если Вы погуглите для "шлюза SMS то", Вы найдете большой список приложений, которые можно установить, который обеспечит эту возможность. Можно также взять старый сотовый телефон и ПК и установить их использующий это названное учебное руководство: Установка Шлюза SMS для создания собственного шлюза SMS.

  2. Используйте готовый сервис

    Существуют поставщики услуг, которые предлагают эту возможность (обычно за плату). Вот являются несколько ими:

    сбор свободный

    Эти поставщики часто обеспечивают библиотеку и/или API, такой как этот от twilio, так, чтобы можно было интегрировать их более легко в приложение в случае необходимости.

  3. Пошлите электронное письмо шлюзу SMS своего поставщика

    Большинство поставщиков (Verizon, AT&T, и т.д.) обеспечивает способность отправить SMS-сообщение на Ваш телефон с помощью @provider.com. Википедия также имеет довольно исчерпывающий список шлюзов SMS.

5
25.03.2015, 01:04
1 ответ

Код "% $ width. $ {Width} s \ n" генерирует строку формата, которая подходит для использования printf

В опубликованном вами скрипте width было присвоено значение 55 , так что и $ width , и $ { width} расширяются с помощью bash до 55 : весь первый параметр до printf расширяется до % 55.55s \ n ; это формат % s со спецификаторами ширины поля и точности, которые просят напечатать ровно 55 символов. Учитывая значение переменной делитель в этот момент, это просто напечатает строку из 55 знаков равенства. Возможно, более простой способ распечатать то же самое было бы perl -e 'print "=" x 55, "\ n"' .

Самая простая форма для спецификатора ширины поля - целое число: оно просит printf использовать по крайней мере это количество символов для печати. Если для соответствующего параметра для печати требуется меньше символов, чем указано, то выходные данные заполняются пробелами слева.

Самая простая форма для спецификатора точности - точка, за которой следует целое число: при применении к % s ,это устанавливает максимальное количество символов для печати. (Для числовых типов это имеет другое значение.)

В ответ на комментарий я также упомяну немного о расширении переменных оболочки (полное объяснение можно найти, выполнив поиск по запросу «расширение параметров» в документации bash, см. также $ VAR vs $ {VAR} и цитировать или не цитировать ):

  • Когда установлена ​​переменная, скажем x , тогда $ x расширяется до значения x . Если это значение содержит пробелы, то расширение будет состоять из нескольких слов. Вот почему в приведенном выше коде важно, чтобы, например, "$ format" было заключено в двойные кавычки: это заставляет раскрытие быть одним словом (в противном случае printf увидит первый параметр % - 15s , за которым следует аргумент % 8s и т. д. вместо получения всей строки формата как одного параметра).

  • Допускается писать $ {x} вместо просто $ x , чтобы раскрыть переменную x ; в случае выше, "$ {width} s" , это необходимо, потому что если бы кто-то написал "$ widths" , то bash попытался бы получить значение переменная widths , которая не задана, что приводит к пустому расширению.

8
27.01.2020, 20:36

Теги

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