Size: a a a

2021 February 12

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

Лс

Лень с Самосознанием... in pro.bash
nod
В случае echo правильно. А теперь реальная (хоть и упрощенная) ситуация:
Code:
VAR='-g "2049,46 683x722"'
grim ${VAR} -
Output:
invalid geometry
Debug
+ VAR='-g "2049,46 683x722"'
+ grim -g '"2049,46' '683x722"' -
invalid geometry
Я пока дебаг не включил, часа пол не мог понять, почему echo правильно печатает, но когда подставляю реальную команду, то всё ломается.
А посему не grim -g $VAR?
источник

n

nod in pro.bash
Лень с Самосознанием
А посему не grim -g $VAR?
А там не всегда -g нужно подставлять
источник

n

nod in pro.bash
∀lǝxǝʎ
лучше опции задавать в отдельные переменные, боюсь что норм решения такого поведения нет
О, спасибо, сейчас попробую
источник

Лс

Лень с Самосознанием... in pro.bash
Да и фигурные скобки тут лишними выглядят
источник

∀lǝxǝʎ in pro.bash
и кавычить надо будет каждую переменную, особенно если пробел внутри может быть
источник

Лс

Лень с Самосознанием... in pro.bash
∀lǝxǝʎ
и кавычить надо будет каждую переменную, особенно если пробел внутри может быть
?
источник

∀lǝxǝʎ in pro.bash
я про "$VAR"
источник

Лс

Лень с Самосознанием... in pro.bash
∀lǝxǝʎ
я про "$VAR"
Велика проблема
источник

n

nod in pro.bash
∀lǝxǝʎ
лучше опции задавать в отдельные переменные, боюсь что норм решения такого поведения нет
В общем, это работает, но до тех пор, пока переменные не пустые. Когда пустые, баш подставляет '' на место "$VAR"
Пришлось городить вот это:
grim $([ -n "$OPTION" ] && echo -n "$OPTION")\
    "$([ -n "$GEOMETRY" ] && echo -n "$GEOMETRY")"\
    "$FILENAME"
источник

Vs

Vladislav support.od... in pro.bash
#нужна_оптимизация
Есть тестовый конфиг и нужно раскоментировать ряд опций https://pastebin.com/WW8t54fw
Мой вариант получился огромный - https://pastebin.com/igfk5iik
скрипт будет выполнятся на FreeBSD ( csh )
источник

n

nod in pro.bash
Vladislav support.od.ua
#нужна_оптимизация
Есть тестовый конфиг и нужно раскоментировать ряд опций https://pastebin.com/WW8t54fw
Мой вариант получился огромный - https://pastebin.com/igfk5iik
скрипт будет выполнятся на FreeBSD ( csh )
Насколько я помню, ключ -i для sed есть только в gnu версии
источник

Vs

Vladislav support.od... in pro.bash
С ним все нормально, он и во фряхе работает, только синтаксис чуть иной
источник

n

nod in pro.bash
nod
В общем, это работает, но до тех пор, пока переменные не пустые. Когда пустые, баш подставляет '' на место "$VAR"
Пришлось городить вот это:
grim $([ -n "$OPTION" ] && echo -n "$OPTION")\
    "$([ -n "$GEOMETRY" ] && echo -n "$GEOMETRY")"\
    "$FILENAME"
Это тоже не работает. Та же проблема - вывод двойных кавычек из сабшелла.
Единственный вариант собирать составные команды - это пайпы и xargs.
источник

∀lǝxǝʎ in pro.bash
nod
В общем, это работает, но до тех пор, пока переменные не пустые. Когда пустые, баш подставляет '' на место "$VAR"
Пришлось городить вот это:
grim $([ -n "$OPTION" ] && echo -n "$OPTION")\
    "$([ -n "$GEOMETRY" ] && echo -n "$GEOMETRY")"\
    "$FILENAME"
Ну, это часто желаемое поведение, не терять пустые переменные
источник

n

nod in pro.bash
∀lǝxǝʎ
Ну, это часто желаемое поведение, не терять пустые переменные
Да, видимо это правильно. Жаль, что раньше с этим не столкнулся - потерял часа 4.
Кстати, точно так же себя ведёт и zsh, так что это не странности баша
 echo -n \
      $([ -n "$OPTION" ] && echo -n "$OPTION") \
      $([ -n "$GEOMETRY" ] && echo -n \"$GEOMETRY\") \
      "\"$FILENAME\"" | sed 's/""//g' | xargs grim
источник

∀lǝxǝʎ in pro.bash
nod
Да, видимо это правильно. Жаль, что раньше с этим не столкнулся - потерял часа 4.
Кстати, точно так же себя ведёт и zsh, так что это не странности баша
 echo -n \
      $([ -n "$OPTION" ] && echo -n "$OPTION") \
      $([ -n "$GEOMETRY" ] && echo -n \"$GEOMETRY\") \
      "\"$FILENAME\"" | sed 's/""//g' | xargs grim
"${GEOMETRY:+'$GEOMETRY'}"
так удобнее/красивее/компактнее писать, да и нет смысла в sed'е ведь и так кавычки пишем только тогда когда уже проверили что переменная не пустая
источник

n

nod in pro.bash
∀lǝxǝʎ
"${GEOMETRY:+'$GEOMETRY'}"
так удобнее/красивее/компактнее писать, да и нет смысла в sed'е ведь и так кавычки пишем только тогда когда уже проверили что переменная не пустая
Спасибо, попробую. Не умею этими фигурными скобками пользоваться просто
источник

∀lǝxǝʎ in pro.bash
man bash
Parameter Expansion
источник

F

Fljúgandi Kettlingur... in pro.bash
nod
Спасибо, попробую. Не умею этими фигурными скобками пользоваться просто
Это довольно просто.
Ты можешь написать $var
или (для четкого отделения границ) ${var} - чтобы писать, скажем, "${seconds}s"
И есть несколько дополнительных возможностей, как коллега выше справедливо замечает, bash documention -> "parameter expansion"
например, ${var/foo/bar} или  ${var:-defvalue}

https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html
источник