Size: a a a

2021 June 08

∀lǝxǝʎ in pro.bash
ну в данном случае можно написать так: "'hello world'"
источник

∀lǝxǝʎ in pro.bash
но в целом да. надо будет везде не прошляпить expansion'ы, хотя это и так надо делать
источник

AK

Alexandr Khan in pro.bash
Всем привет, подскажите как настроить verbose вот таким образом:

# Выводится без "-v"
echo ("Yum updating...")

# Лог выполнения выводится только с "-v"
yum update -y
источник

ł

łibfitź.r13.a in pro.bash
set -x?
источник

ł

łibfitź.r13.a in pro.bash
Если суть в том, чтобы команды показывать
источник

AK

Alexandr Khan in pro.bash
Не команды показывать, а именно их поток выполнения
источник

AK

Alexandr Khan in pro.bash
Stdout stderr
источник

AK

Alexandr Khan in pro.bash
А без "-v" показывать только:
"Yum updating..."
источник

ł

łibfitź.r13.a in pro.bash
Можно конечно сделать что-то типа
if [[ -z $DEBUG ]]; then yum update -y 2>&1; else yum update -y &>/dev/null
или подобное, но эээ зачем?
источник

AK

Alexandr Khan in pro.bash
Юзер френдли вывод типа) не моя идея
Пришла мысль сделать что-то такое:

log() {
if [[ "$1" == "-v" ]]; then
1> log.txt 2&>1
fi
}

Только как это к команде применить и можно ли вообще?
источник

∀lǝxǝʎ in pro.bash
Ни когда ни в одной тулзе не использовал такое? Или считаешь что для ПО на Си это больше оправдано?
источник

ł

łibfitź.r13.a in pro.bash
Как-то сходу не вспомню, что решал такой кейс
источник

AK

Alexandr Khan in pro.bash
если команд много будет, слишком здоровенный if/else получится
я новичок совсем, сори может плохо объяснил задачу
источник

ł

łibfitź.r13.a in pro.bash
Ну я бы со своей колокольни сказал, что проще сперва отладить скрипт, а потом использовать без лишних дебагов
источник

ł

łibfitź.r13.a in pro.bash
Ну разве что
run_with_log() {
 if [[ ! -z $DEBUG ]]; then
   eval "${@}" &>/my/log/file.txt
 else
   eval "${@}"
 fi
}
(в проде не использовать никогда)
Но, во-первых, привязываться к -v всегда на первой позиции так себе идея, во-вторых, evalы тоже так себе идея, и простого универсального способа подобное сделать я сейчас не вижу
источник

ł

łibfitź.r13.a in pro.bash
...и сейчас в меня полетят помидоры
источник

🌚

🌚 YupiRex in pro.bash
#!/usr/bin/bash

RUN(){
       [[ "$2" == "-v" ]] &&
       $1 >/dev/null      ||
       $1
}

RUN "apt update" "$1"
источник

🌚

🌚 YupiRex in pro.bash
в докере же пишут перед каждой командой RUN
источник

F

Fljúgandi Kettlingur... in pro.bash
ты блин изобретаешь велосипед сейчас. Тебе не нужно передавать в скрипт кавычки как кавычки, тебе нужно их отдавать дальше.
Смотри.
Ты вызываешь скрипт как script 1 "2 3"
внутри скрипта делаешь
foo $1 (превращается в foo 1)
bar $2 (превращается в bar 2 3, хотя ты ждешь bar "2 3")
не надо ескейпить кавычки при первом вызове, надо переписать скрипт с "${@}" на что-то вроде for i in "${@}"; do "$i"; done
источник

ł

łibfitź.r13.a in pro.bash
Давайте сделаем из баша докерфайл
источник