父shell和子shell之间怎么通信?

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

父shell和子shell之间怎么通信?

#1

帖子 xiooli » 2008-08-16 18:19

RT

怎么把子shell的输出传回到父shell?

ps:不要说读文件 :twisted:
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#2

帖子 BigSnake.NET » 2008-08-16 18:22

文件,管道,socket,共享内存。。。
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

#3

帖子 xiooli » 2008-08-16 18:31

BigSnake.NET 写了:文件,管道,socket,共享内存。。。
大蛇,麻烦举个例子嘛 :lol:
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#4

帖子 BigSnake.NET » 2008-08-16 18:46

没看到 shell 。。

shell的话不清楚了
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

#5

帖子 bones7456 » 2008-08-16 18:52

最傻的就用文件嘛~
如果要传递的信息就是几个小数字,还可以用kill信号.
关注我的blog: ε==3
头像
muzuiget
帖子: 1097
注册时间: 2007-12-31 14:57

#6

帖子 muzuiget » 2008-08-16 19:04

变量不行么?
chasye
帖子: 333
注册时间: 2007-05-13 15:20

#7

帖子 chasye » 2008-08-16 19:30

PIPE=/tmp/test.pipe

mkfifo $PIPE

echo "just a test" > $PIPE  #如果不在后面用&, 进程就动在一直等其它进程读$PIPE

cat $PIPE #读取信息
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

#8

帖子 xiooli » 2008-08-16 20:00

chasye 写了:PIPE=/tmp/test.pipe

mkfifo $PIPE

echo "just a test" > $PIPE  #如果不在后面用&, 进程就动在一直等其它进程读$PIPE

cat $PIPE #读取信息
我用过这个,我是想弄一个计时器,想随时的取得时间

代码: 全选

timer()
{
	[ -e /tmp/fifo ] || mkfifo /tmp/fifo
	while :;do
		printf '%.2d:%.2d' $(($i/60)) $(($i%60));i=$((i+1))
		sleep 1
	done > /tmp/fifo
}
i=0
timer &
cat /tmp/fifo
,用这种方法的话一旦cat终止了,那么计时也就终止了啊
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#9

帖子 BigSnake.NET » 2008-08-16 20:16

> /tmp/fifo 放到 printf 那行
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

#10

帖子 xiooli » 2008-08-16 20:30

BigSnake.NET 写了:> /tmp/fifo 放到 printf 那行
不行,这样的话它时间是cat一次才变一次,不cat就不变
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#11

帖子 BigSnake.NET » 2008-08-16 20:34

xiooli 写了:
BigSnake.NET 写了:> /tmp/fifo 放到 printf 那行
不行,这样的话它时间是cat一次才变一次,不cat就不变
每秒cat一次。。

管道就是这样的,必须两边都有东西才会工作
前面关了就会eof,后面关了就会broken pipe
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

#12

帖子 xiooli » 2008-08-16 20:43

BigSnake.NET 写了:
xiooli 写了:
BigSnake.NET 写了:> /tmp/fifo 放到 printf 那行
不行,这样的话它时间是cat一次才变一次,不cat就不变
每秒cat一次。。

管道就是这样的,必须两边都有东西才会工作
前面关了就会eof,后面关了就会broken pipe
晕乎,这样的话我就用另一种方法了。谢谢大家的解答哦 :lol:
chasye
帖子: 333
注册时间: 2007-05-13 15:20

#13

帖子 chasye » 2008-08-16 22:22

这样不如用信号

用trap捕捉,kill 发送

进程1,先把信息写入一文件
然后向进程2,发信号

进程2,收到信号,读取方件信息

基本就这样,把信息传来传去
头像
yjcong
帖子: 2470
注册时间: 2006-02-28 3:11

#14

帖子 yjcong » 2008-08-16 22:33

chasye 写了:这样不如用信号

用trap捕捉,kill 发送

进程1,先把信息写入一文件
然后向进程2,发信号

进程2,收到信号,读取方件信息

基本就这样,把信息传来传去
lz说了, 不用写文件的方法
一梦三年,
松风依旧,
萝月何曾老.


灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.
头像
lonelycorn
帖子: 438
注册时间: 2007-05-20 18:44
来自: 唐山,河北,中国
联系:

#15

帖子 lonelycorn » 2008-08-18 22:02

export行不行?
我逗无了奈了……
HP的本跑ubuntu还得把我折腾死。
显卡、无线/有线网卡、声卡、键盘……

代码: 全选

while :
do
  work_hard
done
回复