BASH - 如何从在后台运行脚本变量得到 [英] BASH - How to get variable from the script that runs in the background

查看:164
本文介绍了BASH - 如何从在后台运行脚本变量得到的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有2个bash的文件,文件a.sh和文件b.sh。

I have 2 bash files, file a.sh and file b.sh.

文件a.sh内容

# !/bin/bash
(/root/b.sh) & # <--- must be run in the background!!!
sleep 1
echo "--${VAR}--"

文件b.sh内容

contents of the file b.sh

# !/bin/bash
VAR=100

运行脚本/root/a.sh,其结果是:----

run script /root/a.sh and the result is: ----

为什么不是结果:--100 -

推荐答案

a.sh

# !/bin/bash

ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
SCRIPT_FILE="$ROOT_DIR/b.sh"

$SHELL $SCRIPT_FILE &
SCRIPT_PID=$!
TEMP_FILE="/tmp/$SCRIPT_PID.data"

# kill child process on exit
trap cleanup EXIT INT TERM
cleanup() {
  kill $SCRIPT_PID
  exit $?
}

# wait child process to put data
waitdata() {
  while [ ! -f $TEMP_FILE ]
  do
    sleep 1
  done
}

# main loop
while :
do
    waitdata
    VAR=$(cat $TEMP_FILE)
    echo $VAR
    sleep 2
done

b.sh

#!/bin/bash

# my pid
TEMP_FILE="/tmp/$$.data"

# trap (control-c, kill, etc)
trap cleanup EXIT INT TERM
cleanup() {
  rm -f $TEMP_FILE
  exit $?
}

# main loop
while :
do
    VAR=$(date)
    #echo $VAR
    echo $VAR > $TEMP_FILE
    sleep 2
done


这篇关于BASH - 如何从在后台运行脚本变量得到的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆