1.3.3 代码片段

代码片段 #

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

本文访问量

本站总访问量

本站总访客数