На странице руководства указано следующее:
gtk-launch takes at least one argument, the name of the application to launch. The name should match application desktop file name, as residing in /usr/share/application, with or without the '.desktop' suffix.
Это указывает на то, что файл рабочего стола должен находиться в указанном месте, иначе его нельзя будет использовать для запуска приложения. Исходный файл gtk/gtk -launch.c показывает, что gtk -launch ничего не выполняет, но помещает сообщение на шину D -с запросом на запуск требуемого приложения.
Чтобы разделить новую строку в zsh, вы используете флаг расширения параметраf
(f
для строки f
eed ), который является сокращением отps:\n:
:
for num (${(f)numholds}) print -r New item: $num
Вы также можете использовать$IFS
-разбиение, которое вzsh
(в отличие от других Bourne -подобных оболочек )вы должны явно запрашивать расширение параметра, используя$=param
синтаксис($=
немного похоже на ножницы):
for num ($=numholds) print -r New item: $num
Ваша переменная является строкой, а не массивом. То, что он содержит символы новой строки, не имеет значения. Ваш for num in $numholds
видит все это как единое значение, так как вы его сохранили.
Простым обходным решением было бы использование цикла while
и строковой конструкции <<<
здесь -для его передачи:
% while read num; do echo "$num"; echo "New Item"; done <<<"$numholds"
409503
New Item
409929
New Item
409930
New Item
409932
New Item
409934
New Item
409936
New Item
409941
New Item
409942
New Item
409944
New Item
409946
New Item
Это по существу эквивалентно более уродливому (см. здесь , почему это плохая идея):
% for num in $(echo "$numholds"); do echo $num; echo "new item"; done
409503
new item
409929
new item
409930
new item
409932
new item
409934
new item
409936
new item
409941
new item
409942
new item
409944
new item
409946
new item
Наконец, вы можете вместо этого сделать переменную массивом:
numArray=($(echo "$numholds"))
Теперь вы можете использовать нужную конструкцию:
% for num in "${numArray[@]}"; do echo $num; echo "new item"; done
409503
new item
409929
new item
409930
new item
409932
new item
409934
new item
409936
new item
409941
new item
409942
new item
409944
new item
409946
new item
tpad%