Chinaunix首页 | 论坛 | 博客
  • 博客访问: 87936
  • 博文数量: 21
  • 博客积分: 1416
  • 博客等级: 上尉
  • 技术积分: 215
  • 用 户 组: 普通用户
  • 注册时间: 2005-09-02 14:45
文章分类

全部博文(21)

文章存档

2010年(2)

2009年(7)

2007年(3)

2006年(2)

2005年(7)

我的朋友

分类:

2007-08-30 16:01:34

    协作进程是一个特殊的双向管道,允许shell脚本程序向另一个命令的标准输入写数据,或从它的标准输出读取数据。在命令后附加|&就可以讲命令初始化成一个协作进程。协作进程的读(read)写(print)需加p选项。下边是是一个实例(bc算术计算):
OpenBSD%vim test.sh
#!/bin/ksh
cat <************************
ksh test
************************
EOF
bc |& # 初始化协作进程

while true
do
print 'select operators'
cat < a) +
b) -
c) *
d) /
e) ^
EOF # 运算符
read op # 读取用户输入
case $op in
a) op="+";;
b) op="-";;
c) op="*";;
d) op="/";;
e) op="^";;
*)
continue;
esac
print -p scale=3 # 将输入的字符串"scale=3"通过管道传给协作进程bc,print的输出为bc命令的输入。
print 'Enter two number'
read n1 n2 # 读取用户输入的数字
print -p "$n1" "$op" "$n2" # print -p 向协作进程发送算术表达式。
read -p reslut # read -p 从协作进程读取输出
print $reslut
print -n 'Contine(y/n)?'
read answer
case $answer in
[Nn]*)
break;;
esac
done
print 'Bye-bye'
OpenBSD%ksh test.sh
************************
ksh test
************************
select operators
a) +
b) -
c) *
d) /
e) ^
a
Enter two number
12 3
15
Contine(y/n)?n
Bye-bye
OpenBSD%
阅读(1557) | 评论(0) | 转发(0) |
0

上一篇:OpenBSD下使用samba

下一篇:Absolute OpenBSD

给主人留下些什么吧!~~