我试图让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
的内容(文件、命名管道等)可以阅读。