use*_*734 2 variables bash scope fork
我想同时运行函数f1,f2然后只有在完成后才执行操作.
似乎如果函数在脚本中是后向的,脚本f1/f2done看不到值更改,则until循环不会终止,并且不会执行最后一行.
编辑 - 需要额外的功能
2.有没有办法可以读取/写入脚本中的主流程变量(不使用文件)?
谢谢你的阅读.
#!/bin/bash
f1done="false"
f2done="false"
function f1 {
echo "f1: "
sleep 4
echo "f1 done."
f1done="true"
}
function f2 {
echo "f2: "
sleep 2
echo "f2 done."
f2done="true"
}
f1 &
f2 &
until [[ "$f1done" == "true" && "$f2done" == "true" ]]; do
echo "$f1done $f2done...";
sleep 3;
done
echo "Both done."
Run Code Online (Sandbox Code Playgroud)
f1并且f2将是单独的过程,因此具有与主过程分开的地址空间.因此你的循环将是无限的.
你需要wait改用.
即
更改
until [[ "$f1done" == "true" && "$f2done" == "true" ]]; do
echo "$f1done $f2done...";
sleep 3;
done
Run Code Online (Sandbox Code Playgroud)
至
wait;
wait;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
434 次 |
| 最近记录: |