我试图让bash将参数传递给另一个bash,我设法做到了这一点,方法是从其中一个中获取一个并从另一个中调用它,使它们成为同一外壳下的父和子。问题是,子对象是一个循环,因为它试图捕捉事件(可能正在读取fifo(pipefile))而这阻止了bash…好吧,所以我想让我们试着在后台运行bash,我在这里得到的问题是,变量不是int,因为我猜它不在同一个shell下,我试着寻找和挖掘,但没有可能的结果…
同时,在测试的某个时刻,当我发送到fifo(管道文件)时,我的shell开始变得疯狂,即使什么也没有(我知道它正在读取),它的行为就好像有什么东西读取了fifo,而我的其他bash屏幕开始做疯狂的事情……:o个
不管怎样,我想知道是否有人能帮我。不知道我想做的是不是有可能…谢谢。
不知道我在哪里读到的(还没找到页面)将脚本移到后台使其可以访问父进程和子进程,子进程和它的papas mamas,但这不是我目前的经验。
巴什1

   #!/bin/bash

    while true
    do

    . ./bash2.sh &

    if [[ $VARIABLE = 1 ]]; then
    echo "message recevied"
    fi

巴什2
  #!/bin/bash

    while true
    do

    if [[ $(cat ./fifo1) = 0 ]]; then
    VARIABLE=1
    fi
    done

谢谢

最佳答案

因为&总是启动一个新进程,所以

. ./bash2.sh &


# Assuming bash2.sh is executable
./bash2.sh &

bash2.sh定义的任何变量都被限制在执行它的进程中;它们对bash1.sh不可用。你的选择是
在前台运行. ./bash2.sh,并等待它完成
./bash2.sh写入bash1.sh的内容(文件、命名管道等)
可以阅读。

10-04 12:14