代码片段
#
if item in list
#
list1=(
a
b
c
d
)
list2=(
b
c
)
# isIn $item $list
function isIn() {
item=$1
list="${@:2}"
for i in ${list[*]}; do
if [[ $i == $item ]]; then
return 0
fi
done
return 1
}
for item in ${list1[*]}; do
if isIn $item ${list2[*]}; then
echo $item
fi
done
锁文件
#
- [建议] 使用
pid
生成锁文件,并用 set -C
来做逻辑判断
lockfile=/tmp/mylock
if (set -C;echo $$ >$lockfile) 2>/dev/null; then
# set -C 使已存在的文件不能再被写
# echo 不旦生成了锁文件,而且还将pid放入其中
# 当此lock文件存在时,if返回失败,跳到else
trap 'rm $lockfile; exit $?' INT TERM EXIT # trap保证了脚本异常中断时,释放锁文件(删)
{
my critical code... # 此处是正式的脚本代码
my critical code...
my critical code...
}
rm $lockfile # 正式代码运行完了,释放锁文件
trap - INT TERM EXIT # 恢复trap的设置(如在脚本最后时,非必要恢复)
exit 0
else
# 锁文件生效,会跳到此处
echo "$lockfile exist, pid $(<$lockfile) is running." # 打印错误信息
exit 1
fi
叶王 © 2013-2024 版权所有。如果本文档对你有所帮助,可以请作者喝饮料。