Как загрузить свое собственное приложение GUI без остальной части GUI в Linux?

Ответ roaima отвечает на вопрос, который вы на самом деле задали:

Q: В чем разница между этими двумя кодовыми блоками? Почему они выдают разные результаты?

A: Первый цикл перебирает аргументы командной строки; второй цикл перебирает аргументы числа (индексы).

... хотя я полагаю, что вы бы сами это поняли еще через шесть-восемь минут - это вроде очевидно. Вы, вероятно, хотите, чтобы вторая программа сделала что-то вроде

echo $$i                                        # This doesn't do what you want.

для отображения аргумента, индексированного числом , который хранится в переменной i (и обозначается как $ i ). Как отмечено в комментарии, это не то, что вы хотите. (Он что-то делает; Я призываю вас поэкспериментировать и выяснить , что он делает.) Но это близко к чему-то, что действительно работает:

eval echo \$$i                                  # Don't do this.

или, что эквивалентно,

eval echo '$'"$i"                               # Don't do this.

Эти команды

  • получают значение i (одно из чисел 1, 2, 3, ...)
  • прикрепите перед ним $ , образуя $ 1 , $ 2 , $ 3 и т. д.
  • используйте eval команда, чтобы сказать: «возьмите эту командную строку , которую я только что создал, и eval измените ее так, как если бы я ее набрал.

Так что это будет иметь эффект выполнения

echo $1
echo $2
echo $3
   ︙

Но, как подсказывают комментарии, вы должны попытаться избежать этого. eval может быть опасным, если вводится что-либо, кроме простых слов. Поиск этот сайт; вы найдете множество объяснений этому.

Но есть довольно безопасный способ заставить вторую программу делать то же самое, что и первая: изменить

echo $i

на

echo ${!i}

Хорошо, прежде всего, $ {i } почти то же самое, что $ i . ! дает эффект, аналогичный эффекту команды eval - $ {! X} ищет значение x ( т.е. $ x или $ {x} ) и использует , что в качестве имени переменной для поиска. Итак, если x = foo , то $ {! X} совпадает с $ foo . Приведенный выше код делает то же самое с i , выбирая параметр, имя которого является значением i .

Кстати, вы всегда должны указывать все ссылки на переменные оболочки (например, «$ i» , «$ #» , » $ args ", " $ {i} " и " $ {! i} ") , если у вас нет веской причины не делать этого, {{ 1}}, и вы уверены, что знаете, что делаете.

2
02.10.2018, 18:08
1 ответ

X -Windows имеет режим киоска, который можно использовать для запуска приложения, обычно веб-браузера, в качестве единственного запущенного приложения, без загрузки полного оконного менеджера. Я не знаю, будет ли это работать с Winamp, но вы можете попробовать (из консоли):

startx /path/to/winamp --kiosk
3
27.01.2020, 22:02

Теги

Похожие вопросы