【发布时间】:2014-08-14 15:09:40
【问题描述】:
我尝试使用像这里这样的羊群https://stackoverflow.com/a/169969 但是在一个函数中......我尝试从flock部分更新一个局部变量(函数的语言环境),但它似乎没有更新......
猫测试.sh
#!/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
./test.sh
slot equal 2
slot equal 1
我到底做错了什么......
【问题讨论】:
-
仅供参考,您不需要
function关键字——它使您的脚本与 POSIX sh 不兼容,但这样做不会带来任何好处。 -
你是对的,谢谢指出!
-
当然,使用
local也会使代码与POSIX不兼容,但至少增加了一些价值。