【问题标题】:Running a sh script from another script in cron从 cron 中的另一个脚本运行 sh 脚本
【发布时间】:2019-02-03 04:15:40
【问题描述】:

我有 2 个 shell 脚本 A.sh 和 B.sh

在 A.sh 内部,我想根据某些条件调用 B.sh。 如下所示:

VAR=""
if [-z $VAR]:
then
    echo "running B"
    <path to B.sh>/B.sh > log.txt 2>&1

A.sh 被安排为一个 cron 作业,在 crontab 中每 15 分钟运行一次。

我已授予 B.sh 和 A.sh 执行所需的权限。

当我从 shell 运行 A 时,如果满足条件,它可以执行 B,但是当通过 crontab 运行时,A 无法调用 B。它也不会抛出任何错误。

对此有任何帮助。

【问题讨论】:

  • 尝试使用 set -x 模式运行脚本以获取更多信息。
  • 之类的?发布您正在使用的exact 代码,因为您的代码有几个涉及[ 命令和B.sh 的未指定路径的错误。如果它是相对路径,那么问题可以通过从 shell 运行 A.sh 和从 cron 运行时有效的工作目录之间的差异来解释。
  • 通过shellcheck.net 运行您的脚本,看看它发现了什么问题。
  • 请显示相关代码并说明确切的错误。另见How to create a Minimal, Complete, and Verifiable example。部分脚本和 &lt;path to B.sh&gt; 没有帮助。

标签: linux bash shell cron


【解决方案1】:

舍帮忘记了!?

#!/bin/bash

#!/usr/bin/env bash

【讨论】:

    【解决方案2】:

    如果这是bashshksh,您的if 需要是这样的:

    if [ -z "$VAR" ]
    

    另外,VAR="" 也不要取消设置 var(并且使用 -z 检查未设置的变量),它会分配空字符串。所以如果你想取消设置变量使用命令

    unset VAR
    

    并以fi 结束if 结构

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-15
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 2016-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多