Zenity - 将从zenity表单收集的数据传输到txt数据库

时间:2016-07-16 19:23:33

标签: database bash

目前我正在做一个项目而且我被困住了。如果有人能帮助我,将会很有帮助。我正在使用Linux - Ubuntu系统。我使用Zenity作为我正在创建的图书库存系统的GUI。我现在面临的问题是我不知道如何将通过Zenity收集的数据传输到BookDB.txt。

=============================================== ====================

 zenity --forms --title="New book" --text="Add new book" \

   --add-entry="Title" \
   --add-entry="Author" \
   --add-entry="Price" \
   --add-entry="Quantity Available" \
   --add-entry="Quantity sold"  


    read title
    read author
    read price
    read QtyA 
    read QtyS


echo $title:$author:$price:$available:$sold >> BookDB.txt

echo $BookDB "New book title ' $title ' added successfully "

=============================================== ====================

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:2)

zenity输出到stdout。对于表单,默认情况下,字段使用管道分隔。你想要这样做:

data=$(
    zenity --forms --title="New book" --text="Add new book" \
       --add-entry="Title" \
       --add-entry="Author" \
       --add-entry="Price" \
       --add-entry="Quantity Available" \
       --add-entry="Quantity sold"  
)
case $? in
     1) echo "you cancelled"; exit 1 ;;
    -1) echo "some error occurred"; exit -1 ;;
     0) IFS="|" read -r title author price qtyA qtyS <<< "$data" ;;
esac

如果您不习惯使用pipe作为输出分隔符,则可以选择--separator。例如,您可能希望使用“FS”字符:--separator=$'\034',然后IFS=$'\034' read -r a b c d e <<<"$data"

我发现zenity的文档非常简洁,但这是官方手册:https://help.gnome.org/users/zenity/stable/