GOOGLE ADS

среда, 13 апреля 2022 г.

Что означает $$ в оболочке?

Однажды я прочитал, что одним из способов получить уникальное имя файла в оболочке для временных файлов было использование двойного знака доллара ( $$). Это действительно создает число, которое время от времени меняется... но если вы вызываете его повторно, оно возвращает один и тот же номер. (Решение состоит в том, чтобы просто использовать время.)

Мне любопытно узнать, что это такое $$на самом деле и почему это предлагается в качестве способа создания уникальных имен файлов.


Решение проблемы

$$это идентификатор процесса (PID) в bash. Использование $$- плохая идея, потому что это обычно создает состояние гонки и позволяет злоумышленнику подорвать ваш сценарий оболочки. Взгляните, например, на всех этих людей, которые создавали небезопасные временные файлы и должны были выпускать рекомендации по безопасности.

Вместо этого используйте mktemp. Man - страница Linux для mktemp превосходна. Вот пример кода из него:

tempfoo=`basename $0`
TMPFILE=`mktemp -t ${tempfoo}` || exit 1
echo "program output" >> $TMPFILE

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...