reload_flag=""
if [[ -n "${DEBUG}" ]]; then
reload_flag="--reload"
fi
if [[ -n "${WORKER_COUNT}" ]]; then
workers=${WORKER_COUNT}
else
workers=2
fi
gunicorn --workers ${workers} \
--bind 0.0.0.0:8000 \
${reload_flag} main.wsgi
Писали такие конструкции чтобы проверить наличие флага и сформировать команду правильно?
На самом деле можно сделать тоже самое проще. Для этого используются операторы условной подстановки, доступные в оболочках семейства POSIX.
:- для установки значений по умолчанию
${WORKER_COUNT:-2}
Если переменная не объявлена, то будет дефолтное значение 2.
:+ подставляет указанный текст, если переменная не пуста
${DEBUG:+--reload}
Если что-то есть в переменной то распечатается текст после символа +, в противном случае - ничего. Удобно для опциональных флагов, как в нашем примере.
Итого наш скрипт может выглядеть так:
gunicorn --workers ${WORKER_COUNT:-2} \
--bind 0.0.0.0:8000 \
${DEBUG:+--reload} main.wsgi
Есть еще два оператора.
:= не только подставить дефолтное значение, но и присвоить его переменной, если она пуста
# никаких переменных еще нет
VAL1=${VAL2:=hello}
# теперь доступны обе
echo $VAL1 $VAL2
# hello hello
:? остановить выполнение с ошибкой, если переменной нет.
echo ${MISS:?is required}
bash: MISS: is required
Код выхода будет 1.
#tricks#linux
📰 GNOME extensions are basically required, but they're a ticking time bomb for Linux desktops
The unpredictable nature of GNOME extensions, lacking a standard rulebook, often leads to instability and crashes.
🔗 Source: https://www.xda-developers.com/gnome-extensions-are-reason-linux-desktops-break-themselves/
#gnome#linux
📰 Your GNOME desktop can do what Hyprland does, and you don't need to switch
You might think you need a new Linux desktop to get a tiling window manager, but GNOME can give you that with a single extension.
🔗 Source: https://www.xda-developers.com/forge-brings-hyprlands-best-feature-gnome-actually-works/
#gnome#linux
📰 Rudra is a new keyboard-driven launcher for GNOME Shell
The world isn’t short on keyboard-based Linux launchers. Albert, Ulauncher, rofi and GNOME Do (if you’re old enough to remember that one) are among those I’ve written about in the past. Rudra is a new spin on this old staple – albeit without the extensibility dedicated quick launchers provide. What’s different here is that it’s implemented as a GNOME Shell extension, not a standalone app.
🔗 Source: https://www.omgubuntu.co.uk/2026/02/rudra-gnome-keyboard-launcher
#linux#gnome
[$] Open source for phones: postmarketOS
智能手机市场长期被安卓主导,但安卓系统在自由度和隐私保护方面的问题日益凸显。在开源峰会日本2025上,Luca Weiss 介绍了 postmarketOS,一个为移动设备设计的开源 Linux 操作系统,旨在提供更自由、更注重隐私的替代方案。
原文链接:https://lwn.net/Articles/1055391/
#开源#移动操作系统#Linux#隐私保护
#AIGC
Read more
Fedora now available in Syria
Fedora 项目已恢复对叙利亚的访问权限。根据 Fedora 杂志的报道,Fedora 基础设施团队上周解除了对叙利亚 IP 地址范围的封锁。这一举措意味着叙利亚的用户现在可以下载 Fedora Linux 的 ISO 镜像,访问 RPM 软件仓库、Fedora 账户系统以及构建系统,从而能够使用构成 Fedora 项目的各项应用与服务。此次调整是基于 Fedora 出口管制政策的近期更新。虽然解除防火墙封锁在技术上只需几秒钟,但背后经历了数月的沟通与准备工作。
原文链接:https://fedoramagazine.org/fedora-syria/
#Fedora#Linux#开源#叙利亚
#AIGC
Read more
The end of the kernel Rust experiment
Linux 内核中的 Rust 语言支持已结束实验阶段,成为内核的核心组成部分。在年度维护者峰会上,开发者们达成共识,决定移除其“实验性”标签。这意味着 Rust 在内核中的使用将长期持续。祝贺 Rust-for-Linux 团队取得的成果。
(更多峰会详情,敬请关注后续报道。)
原文链接:https://lwn.net/Articles/1049831/
#Linux#内核开发#Rust#编程语言
#AIGC
Read more