Cột danh sách Yad


2

Tôi cần giúp đỡ với Yad. Đây là mã của tôi:

contact=$(while read line
            do
                firstname=$(echo $line | awk 'BEGIN { FS="|" } { print $2 }')
                lastname=$(echo $line | awk 'BEGIN { FS="|" } { print $3 }')
                num=$(echo $line | awk 'BEGIN { FS="|" } { print $4 }')
                birthday=$(echo $line | awk 'BEGIN { FS="|" } { print $5 }')

                if [  $firstname != ""  -a  $lastname != "" ] ; then
                    echo "$firstname$lastname"
                else
                    if [ $firstname != "" ] ; then
                        echo "$firstname,"
                    elif [ $lastname != "" ] ; then
                        echo "$lastname"
                    else
                        echo "$num"
                    fi
                fi

            done < "contactlist.txt" )
idlist=$(while read line
            do
                idnum=$(echo $line | awk 'BEGIN { FS="|" } { print $1}')
                echo $idnum
            done < "contactlist.txt" )

sortcontact=$(printf "%s\n" $contact | sort)

selected=$(yad --title="Contacts" --width=200 --height=200 --button="DISPLAY:2" --button="ADD:3" --list --separator=""  --column="List" $sortcontact --column="ID:NUM" $idlist)

Đầu ra trong $idlist$sortcontacttất cả được trộn lẫn.

Tôi muốn rằng ID cột chỉ nên có $idlisttrong khi danh sách cột chỉ nên có $sortcontact.


Và là yadgì?
Oli

Yad là viết tắt của "Tuy nhiên, một hộp thoại khác" code.google.com/p/yad
joanne_

1
Tôi rất sẵn lòng giúp đỡ nhưng tôi không có gì để kiểm tra. Bạn có thể thiết lập mã của mình để thay vì phân tích tệp, nó chỉ chạy dữ liệu tĩnh? Và trên trang web cộng, nếu điều đó hoạt động, bạn biết vấn đề ở đâu.
Oli

Câu trả lời:


3

Tôi không biết yad, nhưng nó rõ ràng là một nhánh của sự thoải mái, vì vậy bạn có thể cần phải cung cấp cho nó các mặt hàng theo cách tương tự như với zquil; name1 id1 name2 id2thay vì name1 name2 id1 id2.

Một cái gì đó như thế này nên gần với những gì bạn muốn, tôi nghĩ.

#!/usr/bin/env bash
items=()
while IFS='|' read -r idnum firstname lastname num birthday _; do
    if [[ $firstname || $lastname ]]; then
        items+=( "$firstname $lastname" "$idnum" )
    else
        items+=( "$num" "$idnum" )
    fi
done < <(sort -t'|' -k2 contactlist.txt)

selected=$(yad --title=Contacts --width=200 --height=200 \
               --button=DISPLAY:2 --button=ADD:3 --list \
               --separator= --column=List --column=ID:NUM \
               "${items[@]}")

Cảm ơn bạn! đã làm việc hoàn hảo! Thêm vào đó bạn đã làm cho mã đơn giản hơn !!
joanne_
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.