[英]BASH local and flock
我嘗試使用像這里https://stackoverflow.com/a/169969這樣的一個群,但是在一個函數中......我嘗試從flock部分更新一個局部變量(locale到函數),但它似乎沒有更新......
#!/bin/bash
function _job_worker()
{
local z=1
local result=
(
# Wait for lock on /var/lock/.manager.exclusivelock (fd 200)
flock -x -w 10 200 || return
z=2
echo "slot equal $z"
) 200>/var/lock/.manager.exclusivelock
echo "slot equal $z"
}
_job_worker
slot equal 2
slot equal 1
我到底做錯了什么......
(
和)
創建一個子shell。 這是一個單獨的過程,有自己的變量和狀態 - 它不僅僅是不會轉義子shell的本地變量,而是全局變量,文件處理更改,當前目錄更改以及(幾乎)其他所有內容。
使用{
和}
代替創建一個在同一個shell中運行的作用域重定向的塊,而不是啟動子shell。
那是:
_job_worker() {
local z=1 result=
{
# Wait for lock on /var/lock/.manager.exclusivelock (fd 200)
flock -x -w 10 200 || return
z=2
echo "slot equal $z"
} 200>.manager.exclusivelock
echo "slot equal $z"
}
_job_worker
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.