The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Назначить сложную команду на yad button, !*! bicyclist56, 10-Фев-21, 06:20  [смотреть все]
#! /bin/bash
# Есть работающий пример:
yad --center --borders=20 \
    --title="YAD Custom Dialog Buttons" \
    --button="Выполнить":"bash -c 'echo Yes!'" \
    --button="Exit"
# Задаю для простоты значения напрямую (на самом деле через форму yad):
HH=10
MM=30
TT="aplay /home/vvv/.local/share/sounds/timer.wav"
DD="03/10/21"
# Не создается at задача таким образом:
yad --center --borders=20 \
    --title="Запись задания" \
    --button="Выполнить":"echo $TT | at $HH:$MM $DD" \
    --button="Exit"
# И если в одну переменную:
CL="echo $TT | at $HH:$MM $DD"
# То тоже не работает:
yad --center --borders=20 \
    --title="Запись задания" \
    --button="Выполнить":"bash -c $CL" \
    --button="Exit"

Отдельной строкой успешно выполняется:
echo $TT | at $HH:$MM $DD

Вопрос: как правильно назначить эту команду на button="Выполнить"? Целый день игрался с разными кавычками, скобками и прочими спец.символами, сдался...

  • Назначить сложную команду на yad button, !*! bicyclist56, 06:50 , 10-Фев-21 (1)
    #! /bin/bash
    HH=10
    MM=30
    TT="aplay /home/vvv/.local/share/sounds/timer.wav"
    DD="03/10/21"
    # Оказывается, все можно сделать очень просто,
    # посмотрев значение $exval после нажатия нужной кнопки (нажатие ОК дает 0):
    yad --title="Запись задания"
    exval=$?
    case $exval in
       0) echo $TT | at $HH:$MM $DD;;
    esac
    # Задание успешно создано

    Тем не менее, прошу ответить на поставленный вначале вопрос, если это возможно.

  • Назначить сложную команду на yad button, !*! DiabloPC, 19:36 , 15-Фев-21 (2)
    #! /bin/bash
    HH=18
    MM=35
    TT='echo aplay /home/diablopc/Music/Escala/Aerodynamic.mp3'
    DD="03/10/21"
    yad --center --borders=20 \
        --title="Запись задания" \
        --button="Выполнить":"$TT" \
        --button="Run":"$($TT | at $HH:$MM $DD)"\
        --button="Exit"

    • Назначить сложную команду на yad button, !*! DiabloPC, 19:42 , 15-Фев-21 (3)

      Ну или завернуть это в функцию и вызывать ее:
      #! /bin/bash 
      HH=18
      MM=35
      TT='echo aplay /home/diablopc/Music/Escala/Aerodynamic.mp3'
      DD="03/10/21"

      func_task(){
           $TT | at $HH:$MM $DD
      }

      yad --center --borders=20 \
           --title="Запись задания" \
           --button="Выполнить":"$TT" \
           --button="Run":"func_task"\
           --button="Exit"

      Собственно это одно и то же, но в этом варианте больше ненужных строк

    • Назначить сложную команду на yad button, !*! bicyclist56, 05:22 , 16-Фев-21 (4)
      yad --title="Запись задания" \
          --button="Выполнить":"$TT" \
          --button="Запись":"$($TT | at $HH:$MM $DD)"\
          --button="Exit"

      К сожалению, не работает вариант, команда сразу срабатывает, и at задание создается, а кнопка Exit ничего не отменяет.
      Более того, при просмотре через 'atq -c' созданного задания вижу, что команды $TT там нет вовсе. Вместо задания - одинокая скобочка '}'.
      Cоздание же функции не проще проверки значения '$?'

      Все это я затеял (впервые, можно сказать, на bash & yad) для удобства создания at задач, вывода напоминаний на экране, просмотра списка и тех, и других, а также их удаления. Еще в процессе, но если интересно, вот архивчик с содержимым - https://disk.yandex.ru/d/_Yhya3joETxq_A




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру