Вопрос с LF, думаю всем полезно будет.
ㅤ
Пишу пайплайн, есть такая конструкция:
Я бы хотел, чтобы параметр
Делаю так, но получается какая-то хуйня:
Короче смотри. Задачку можно решить несколькими способами.
Способ 1. Заточен под Bash:
Этот способ не сработает, если код запустится в
Способ 2. Универсальный:
На 100 % POSIX-совместим. По функционалу эти способы идентичны.
Ну и по итогу имеем:
Ну и твои варианты приветствуются, поделись в комментах, глядишь что-то маст-хевное у тебя в загашнике есть.
🛠 #bash #pipeline
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
ㅤ
Пишу пайплайн, есть такая конструкция:
platform=$(uname -m)
docker run --platform linux/arm64
Я бы хотел, чтобы параметр
--platform linux/arm64 подставлял в том случае, если архитектура платформы == arm64, в других случаях этот параметр подставлять не нужно.Делаю так, но получается какая-то хуйня:
platform=$(uname -m)
docker run ${platform/arm64/--platform linux/arm64}
Короче смотри. Задачку можно решить несколькими способами.
Способ 1. Заточен под Bash:
platform=$(uname -m)
docker run $([[ $platform = arm64 ]] && echo "--platform linux/arm64")
Этот способ не сработает, если код запустится в
/bin/sh, потому что оно не POSIX. Тут уже смотри под чем все это будет запускаться.Тут можешь почитать чем отличаются [[ ]] от []
А тут что такое POSIX
Способ 2. Универсальный:
platform=$(uname -m)
docker run $( [ "$platform" = "arm64" ] && echo "--platform linux/arm64" )
На 100 % POSIX-совместим. По функционалу эти способы идентичны.
Ну и по итогу имеем:
[[ ... ]] — это расширенная bash-версия, безопаснее и гибче (поддержка pattern, безопасность кавычек при пробелах и пустых строках, поддежка логики с &&) [ ... ] — POSIX-совместимая, более строгая и требующая аккуратности с кавычками.Ну и твои варианты приветствуются, поделись в комментах, глядишь что-то маст-хевное у тебя в загашнике есть.
—
Please open Telegram to view this post
VIEW IN TELEGRAM
1 45