我想用zenity(用户编写的Ipaddress值)获取表单的值,以便用ffmpeg做一些视频流,我尝试了几个例子,如列表,表单,等等。
zenity --forms --title="Add Friend" --text="Enter Multicast address" --separator="," --add-entry="IP address" --add-entry="PORT"
OR
if zenity --list --title="Record Video Stream" --text "Enter the Multicast IP address and port of each of the video stream" --column "Video IP" --print-column=2 --multiple --column "PORT" --editable ip="0.0.0.0" port="2002"
答案 0 :(得分:5)
zenity
的输出是输入的文本,由--separator
字符分隔。退出代码是否已被接受(即OK
,Cancel
已被选中。
例如(在bash中):
OUTPUT=$(zenity --forms --title="Add Friend" --text="Enter Multicast address" --separator="," --add-entry="IP address" --add-entry="PORT")
accepted=$?
if ((accepted != 0)); then
echo "something went wrong"
exit 1
fi
ip=$(awk -F, '{print $1}' <<<$OUTPUT)
port=$(awk -F, '{print $2}' <<<$OUTPUT)
从zenity到ip变量获取ip地址,从zenity形式获取端口变量到端口变量。
第二个例子稍微复杂一点,它使用'editable'模板,这意味着如果数据没有改变你就不会获得任何输出,但它遵循与前一个例子类似的模式。现在,因为您说--print-column=
,它只在输出中显示该列。不幸的是,--list
用于从项列表中选择一行或多行。编辑多行将有效,但是 可以选择每一行来获取该行的输出,即使在对数据进行更改之后也是如此。在这种情况下,由于您未指定--separator
选项,因此使用默认分隔符|
。
在第二种情况下,使用可编辑和列表输入实际上并不是从用户输入角度设计列表的。