为什么 zenity 被执行了两次?
Why is zenity executed twice?
我有以下脚本(称为 ./script
),我想 运行 和 $( ./script )
因为结果应该设置一些环境变量。奇怪的是,当我 运行 在 $( )
中时,zenity 对话框在脚本终止之前显示了两次,而如果我 运行 按原样它只显示一次。
#!/bin/bash
export select=`zenity --list --column=select "option1" "option2"`
echo "export SELECTION_VAR=$select"
谁能解释一下,为什么它会执行两次,我该如何避免这种情况?
由于 script
试图影响父环境,您需要 eval
其结果输出。这种模式很常见,您可以找到 keychain
工具完成的类似案例。如果您将 keychain
、it spits out 调用到 stdout 一个 eval
-able 语句,例如:
SSH_AGENT_PID=1234; export SSH_AGENT_PID;
所以对于你的情况,你会调用 script
与:
% eval $(./script) # choose option2
% echo $SELECTION_VAR
option2
此外,您的 select=
行不应该需要 export
。
我有以下脚本(称为 ./script
),我想 运行 和 $( ./script )
因为结果应该设置一些环境变量。奇怪的是,当我 运行 在 $( )
中时,zenity 对话框在脚本终止之前显示了两次,而如果我 运行 按原样它只显示一次。
#!/bin/bash
export select=`zenity --list --column=select "option1" "option2"`
echo "export SELECTION_VAR=$select"
谁能解释一下,为什么它会执行两次,我该如何避免这种情况?
由于 script
试图影响父环境,您需要 eval
其结果输出。这种模式很常见,您可以找到 keychain
工具完成的类似案例。如果您将 keychain
、it spits out 调用到 stdout 一个 eval
-able 语句,例如:
SSH_AGENT_PID=1234; export SSH_AGENT_PID;
所以对于你的情况,你会调用 script
与:
% eval $(./script) # choose option2
% echo $SELECTION_VAR
option2
此外,您的 select=
行不应该需要 export
。