0

我在 linux 中开发了一个软件,我有问题,我有一个主 yad 窗口(对于这个例子,我使用名称:w1)和执行第二个的按钮:w2,w2 是列表,我想导出选定的行,如何我可以从函数中提取选定的行(知道我到了一半但我无法将我的行从我的函数中取出),我的代码:

w1=$(yad --title="TITLE"\
      --form \
      --no-escape \
      --center \
      --window-icon=gtk-preferences \
      --borders=10 \
      --fixed  \
      --text="TEST" --text-align=center \
      --button="LIST`!format-justify-fill:bash -c w2 && echo $w2"  \
      --button="`QUIT`"!gtk-quit:1 )

w2 () 
{
    INPUT="MY FILE WITH ALL DATA"
    item=$(while read l
    do
       echo "$l"
    done <$INPUT|yad --title="TITLE 2"\
             --borders=10 \
             --listen \
             --no-markup \
             --width=500 \
             --height=500 \
             --no-escape \
             --center \
             --window-icon=gtk-preferences \
             --list \
             --column="COLUMN 1":text \
             --column="COLUMN 2":text \
             --button=""!go-jump:1 \
             --button="QUIT"!go-jump:1)
}
export -f w2 

在这种情况下,变量 $item 包含结果。

4

1 回答 1

0
#!/bin/bash


# Licence: GNU GPL v3
# Version: 1
# Script use:   bash script_name
# This is example script

# Function in yad is not supported but it can work after 
# add in script "export -f function_name" 
# and will work as a separate process like command.


yad --title="TITLE"\
      --form \
      --no-escape \
      --center \
      --window-icon=gtk-preferences \
      --borders=10 \
      --fixed  \
      --text="TEST" --text-align=center \
      --button="LIST"!format-justify-fill:0  \
      --button="gtk-cancel":1 
VAR1="$?"
echo "  DEBUG: VAR1 = $VAR1" 


FUNCTION_VAR2 () {
INPUT=$(echo -e "one \naple \ntwo\nbanana \ntree \ncitrine \nfour \nnewfruit")

VAR2=$( echo "$INPUT" | yad --title="TITLE 2" \
--text="Select the correct one row:" \
--borders=10 \
--listen \
--no-markup \
--width=500 \
--height=500 \
--no-escape \
--center \
--window-icon=gtk-preferences \
--list \
--column="COLUMN 1":text \
--column="COLUMN 2":text \
--button="OK"!go-jump:0 \
--button="gtk-cancel":1 )

echo "  DEBUG: VAR2 = $VAR2" 
VAR3=$(echo "$VAR2" | awk -F"|" '{ print $1 }')
VAR4=$(echo "$VAR2" | awk -F"|" '{ print $2 }')
echo "  DEBUG: VAR3 = $VAR3" 
echo "  DEBUG: VAR4 = $VAR4" 
}


[[ "$VAR1" == "0" ]] && FUNCTION_VAR2
于 2020-11-15T21:55:42.813 回答