为什么zenity被执行两次?



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

#!/bin/bash
export select=`zenity --list --column=select "option1" "option2"`
echo "export SELECTION_VAR=$select"

谁能解释一下,为什么它被执行了两次,我怎么才能避免这种情况?

由于script试图影响父环境,因此需要eval其结果输出。这种模式很常见,您可以在keychain工具中找到类似的案例。如果调用keychain,它会向stdout输出一条可执行eval的语句,如

SSH_AGENT_PID=1234; export SSH_AGENT_PID;

因此,对于您的情况,您将调用script:

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

同样,你不应该在你的select=行上使用export

相关内容

  • 没有找到相关文章

最新更新