Как получить номер строки выбранного элемента Zenity

Может ли кто-нибудь сказать мне, как рассчитать номер строки для выбранного элемента. Я хотел бы, чтобы конкретный номер строки ссылался на подпрограмму, которая будет обрабатывать одну и ту же строку другого файла.

#! /bin/bash item=$(zenity --list "Apples" "Peaches" "Pumpkin" "Pie" \ --column="Select your choice" --text="Text above column(s)" --title="My menu") linenumber=x # Formula to calculate the line number of the selected item here echo "You selected: $item which is in line number: $linenumber" 

Желаемый результат:

 You selected Peaches which is in line number: 2 

Обновить:

Это пример прочитанных элементов. Я использовал плод в сценарии выше, чтобы проиллюстрировать пример строки. Это пример конкретных элементов. Как вы можете видеть, какой-то фактический текст дублируется, но на другой строке. Когда пользователь выбирает элемент, я надеюсь, что у Zenity есть опция, чтобы показать, какая строка была нажата. Каждый раз, когда он запускается, у него будет другой список предметов.

 cairo-dock Desktop XdndCollectionWindowImp unity-launcher unity-panel unity-panel unity-dash Hud Your turn - Play esskwa003 in HneO9CtF • lichess.org - Google Chrome ljames@ubunzeus ljames@ubuntuserver ljames@hera5 site site ljames@ubunzeus launcher - Add Unity Entry for Locally Installed Program - Ask Ubuntu - Google Chrome ljames@ubunzeus eclipse desktop launcher categories - Google Search - Google Chrome launcher - Add Unity Entry for Locally Installed Program - Ask Ubuntu - Google Chrome eclipse MightyText - Google Chrome launcher - Add Unity Entry for Locally Installed Program - Ask Ubuntu - Google Chrome ljames@ubunzeus Inbox - LD James - Mozilla Thunderbird ljames@hera5 ljames@hera5 ljames@ubunzeus ljames@hera5 How to get the line number of a Zenity selected Item - Unix & Linux Stack Exchange - Google Chrome workspace - MyPyDev - ShellTools/SEWork/SEWork/hkrecord.sh - Eclipse - /home/users/l/j/ljames/workspace email - Mozilla Thunderbird command line - Is it possible to control the recording if Audacity is running in the background? - Ask Ubuntu - Google Chrome Bookmark Manager - Google Chrome Formatting Sandbox - Meta Stack Exchange - Google Chrome Apollo III Support - Backing up the Office Computer - Mozilla Thunderbird 

Это точный блок, который у меня есть для вызова вышеуказанных данных:

 #!/bin/bash INPUT=$HOME/infile.txt # IFS=$'\n' item=$(while read l do echo "$l" done <$INPUT|zenity --list --text "sample text " --column "Choose") echo "You selected: [$item] which is in line number: [$linenumber"] 

One Solution collect form web for “Как получить номер строки выбранного элемента Zenity”

Это работало для меня с yad и zenity, а идентификатор столбца не отображается в графическом интерфейсе:

 zenity --list 1 "Apples" 2 "Peaches" 3 "Pumpkin" 4 "Pie" --column="id" \ --column="Select your choice" --hide-column=1 --print-column=1 

Теперь, чтобы добиться того же, когда входной файл является файлом, вы можете предварительно обработать файл с awk например
awk '{print NR};1' infile и передать результат в zenity .
Поскольку в документации :

Zenity возвращает записи в первом столбце текста выбранных строк в стандартный вывод.

ваш $item будет хранить только строку. (это запись в 1-м столбце), а не содержимое строки.
Чтобы получить содержимое линии, вам нужно снова обработать файл и извлечь эту строку на основе номера строки. Так

 linenumber=$(awk '{print NR};1' infile | zenity --list --column="No" \ --column="Select your choice" --text="Text above column(s)" \ --title="My menu" --hide-column=1) 

тогда

 linecontent=$(sed ${linenumber}'!d;q' infile) 

Итак, теперь у вас есть как номер выбранной линии, так и ее содержимое, сохраненное в linecontent и соответственно linecontent .

Interesting Posts
Linux и Unix - лучшая ОС в мире.