为什么zenity会被执行两次?

时间:2015-08-10 13:41:23

标签: bash zenity

我有以下脚本(称为./script),我希望与$( ./script )一起运行,因为结果应该设置一些环境变量。奇怪的是,当我在$( )中运行脚本时脚本终止之前,zenity对话框会显示两次,而如果我按原样运行它,它只会显示一次。

#!/bin/bash

export select=`zenity --list --column=select "option1" "option2"`
echo "export SELECTION_VAR=$select"

任何人都可以解释,为什么它会被执行两次以及我如何避免这种情况?

1 个答案:

答案 0 :(得分:1)

由于script试图影响父环境,因此您需要eval其结果输出。这种模式很常见,您可以通过keychain工具找到类似的案例。如果您调用keychainit spits out stdout ,则可以使用eval语句:

SSH_AGENT_PID=1234; export SSH_AGENT_PID;

因此,对于您的情况,您可以使用:

调用script
% eval $(./script)  # choose option2
% echo $SELECTION_VAR
option2

此外,您不应该在export行上使用select=