Macos 在mac os x中运行crontab任务时取消绑定变量

Macos 在mac os x中运行crontab任务时取消绑定变量,macos,cron,Macos,Cron,当我在mac os x中运行脚本时,如下所示: */1 * * * * /Users/dolphin/Library/"Mobile Documents"/com~apple~CloudDocs/Document/source/dolphin/dolphin-scripts/bash/cron/latex_compile_alive_monitor.sh >> /Users/dolphin/shell.log 输出为: From dolphin@dolphins-MacBook-

当我在mac os x中运行脚本时,如下所示:

 */1 * * * * /Users/dolphin/Library/"Mobile Documents"/com~apple~CloudDocs/Document/source/dolphin/dolphin-scripts/bash/cron/latex_compile_alive_monitor.sh >> /Users/dolphin/shell.log
输出为:

From dolphin@dolphins-MacBook-Pro.local  Tue Jan 21 20:47:01 2020
Return-Path: <dolphin@dolphins-MacBook-Pro.local>
X-Original-To: dolphin
Delivered-To: dolphin@dolphins-MacBook-Pro.local
Received: by dolphins-MacBook-Pro.local (Postfix, from userid 501)
    id 7430417C4C19; Tue, 21 Jan 2020 20:47:00 +0800 (CST)
From: dolphin@dolphins-MacBook-Pro.local (Cron Daemon)
To: dolphin@dolphins-MacBook-Pro.local
Subject: Cron <dolphin@dolphins-MacBook-Pro> /Users/dolphin/Library/"Mobile Documents"/com~apple~CloudDocs/Document/source/dolphin/dolphin-scripts/bash/cron/latex_compile_alive_monitor.sh >> /Users/dolphin/shell.log
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=dolphin>
X-Cron-Env: <USER=dolphin>
X-Cron-Env: <HOME=/Users/dolphin>
Message-Id: <20200121124701.7430417C4C19@dolphins-MacBook-Pro.local>
Date: Tue, 21 Jan 2020 20:47:00 +0800 (CST)

+ BOOK_PATH='/Users/dolphin/Library/Mobile Documents/com~apple~CloudDocs/Document/source/dolphin/summary/'
+ COMMAND='/Library/TeX/texbin/latexmk -pdfxe -pvc -xelatex -interaction=nonstopmode '
+ PROCESS_NAME_KEYWORDS_MAP=(["dolphin-book-2020.tex"]="${COMMAND} ./dolphin-book-2020/dolphin-book-2020.tex" ["the-book-of-mine.tex"]="${COMMAND} ./the-books-of-mine/the-book-of-mine.tex" ["kubelet-learn.tex"]="${COMMAND} ./kubelet-learn/kubelet-learn.tex")
/Users/dolphin/Library/Mobile Documents/com~apple~CloudDocs/Document/source/dolphin/dolphin-scripts/bash/cron/latex_compile_alive_monitor.sh: line 15: dolphin: unbound variable

也许在命令结束时删除空格

#!/usr/bin/env bash

# 当使用未初始化的变量时,程序自动退出
set -u

# 当任何一行命令执行失败时,自动退出脚本
set -e

# 在运行结果之前,先输出执行的那一行命令
set -x

BOOK_PATH="/Users/dolphin/Library/Mobile Documents/com~apple~CloudDocs/Document/source/dolphin/summary/"
COMMAND="/Library/TeX/texbin/latexmk -pdfxe -pvc -xelatex -interaction=nonstopmode "

declare -A PROCESS_NAME_KEYWORDS_MAP=(
    ["dolphin-book-2020.tex"]="${COMMAND} ./dolphin-book-2020/dolphin-book-2020.tex" 
    ["the-book-of-mine.tex"]="${COMMAND} ./the-books-of-mine/the-book-of-mine.tex"
    ["kubelet-learn.tex"]="${COMMAND} ./kubelet-learn/kubelet-learn.tex"
    )
cd "${BOOK_PATH}"
for key in ${!PROCESS_NAME_KEYWORDS_MAP[@]}
do
  PID_COUNT=`ps -ef | grep "${key}" | grep -v "grep" | wc -l`
  if [[ ${PID_COUNT} -lt 1 ]]; then
    nohup `${PROCESS_NAME_KEYWORDS_MAP[${key}]}` &
  else
      echo "process already exists..."
  fi
done