shell特殊变量read 到底怎么用? 100
展开全部
一. read读取单个词
$read name
$tony ma
$echo $name
tony ma
$read id passwd
$allen passwd
$echo $id
$allen
$echo $passwd
$passwd
$read id passwd
$allen kaka gogo
$echo $id
$allen
$echo $passwd
$kaka gogo
二. read读取整行
利用while循环来使read读取整行。
以下是代码清单:
1 #!/bin/bash
2 lineno=1
3 cat $* |
4 while read -r line
5 do
6 echo "$lineno: $line"
7 lineno=$((lineno + 1))
8 done
三. read的嵌套
1)while外层的read依次读取的是文件pbook中的每一行,而内层的read是从console读取的内容。
2)要实现while read的嵌套,可以使用exec命令,将I/O重定向。
注意exec的用法,以及括号的使用。
1 #!/bin/bash
2 echo -n "Enter name to be removed: "
3 read name
4 p=$(grep "$name " phonebook | wc -l)
5 echo $p
6 if [ "$p" -gt 1 ]
7 then
8 echo "More than one match Please select the one to remove;"
9 grep "$name " phonebook > pbook
10 cat pbook | while read line
11 do(
12 echo -n "$line Remove(y/n)?"
13 exec < /dev/tty
14 read answer
15 if [ "$answer" = y ]
16 then
17 grep -v "^$line$" phonebook > /tmp/phonebook.tmp
18 mv /tmp/phonebook.tmp phonebook
19 else
20 continue
21 fi
22 )
23 done
24 else
25 grep -v "^$line$" phonebook > /tmp/phonebook.tmp
26 mv /tmp/phonebook.tmp phonebook
27 fi
28 cat phonebook
$read name
$tony ma
$echo $name
tony ma
$read id passwd
$allen passwd
$echo $id
$allen
$echo $passwd
$passwd
$read id passwd
$allen kaka gogo
$echo $id
$allen
$echo $passwd
$kaka gogo
二. read读取整行
利用while循环来使read读取整行。
以下是代码清单:
1 #!/bin/bash
2 lineno=1
3 cat $* |
4 while read -r line
5 do
6 echo "$lineno: $line"
7 lineno=$((lineno + 1))
8 done
三. read的嵌套
1)while外层的read依次读取的是文件pbook中的每一行,而内层的read是从console读取的内容。
2)要实现while read的嵌套,可以使用exec命令,将I/O重定向。
注意exec的用法,以及括号的使用。
1 #!/bin/bash
2 echo -n "Enter name to be removed: "
3 read name
4 p=$(grep "$name " phonebook | wc -l)
5 echo $p
6 if [ "$p" -gt 1 ]
7 then
8 echo "More than one match Please select the one to remove;"
9 grep "$name " phonebook > pbook
10 cat pbook | while read line
11 do(
12 echo -n "$line Remove(y/n)?"
13 exec < /dev/tty
14 read answer
15 if [ "$answer" = y ]
16 then
17 grep -v "^$line$" phonebook > /tmp/phonebook.tmp
18 mv /tmp/phonebook.tmp phonebook
19 else
20 continue
21 fi
22 )
23 done
24 else
25 grep -v "^$line$" phonebook > /tmp/phonebook.tmp
26 mv /tmp/phonebook.tmp phonebook
27 fi
28 cat phonebook
追问
复制的吧
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询