我的总体目的是能够运行脚本t1.sh,它会启动一个程序,该程序将在脚本完成后保留(本例中为计算器)。 t1.sh然后回显相关的PID,然后可以在调用t1.sh的其他脚本t2.sh中使用。
此问题出现在一个更大的脚本中,但我认为我已将其与以下内容隔离开来。
t1.sh:
#!/bin/bash
gnome-calculator &
PID=$!
echo $PID
运行./t1.sh
启动计算器,立即吐出pid,然后给出新的提示
但是,运行A=$(./t1.sh)
(或使用反引号),脚本似乎是"挂起"直到计算器窗口关闭。对于此脚本,t2.sh:
#!/bin/bash
B=$(./t1.sh)
echo $B
在关闭计算器窗口之前,不会回显任何内容。
我的问题是:
提前感谢任何智慧的话语。
答案 0 :(得分:3)
它正在发生,因为捕获表达式正在等待标准输入关闭。如果你重写脚本
private void grid_SizeChanged(object sender, SizeChangedEventArgs e)
{
//text.Text = grid.Width.ToString();
Dispatcher.BeginInvoke(new Action(() => text.Text = grid.Width.ToString()));
}
你应该好。