BBS.ChinaUnix.net
今日推荐
首页
|
新闻
|
Linux
|
AIX
|
博客
|
论坛
|
存储
|
人才
|
培训
|
知识库
|
资料
|
读书
|
手册
|
精华
|
下载
|
空间
会员:
密码:
免费注册
|
忘记密码
|
会员登录
|
搜索
|
帮助
不知道问题出在哪里了!请各位朋友帮忙分析!
1
2
››
首页
»
论坛
»
Shell
»
论坛跳转 ...
> Linux论坛
> BSD
> BSD文档中心
> Solaris
> Solaris文档中心
> 互操作专区
> AIX
> AIX文档中心
> AS400
> HP-UX
> HP文档中心
> SCO UNIX
> SCO文档中心
> Tru64 UNIX
> IRIX
> Mac OS X
> C/C++
> Shell
> Java
> Java文档中心
> Php
> Perl
> Python
> Python文档中心
> Web开发
> 软件工程
> 中间件技术
> GUI编程
> 软件配置管理
> VOIP开发技术
> CPU与编译器
> Ruby
> 网络安全
> 网络技术
> 网络技术文档中心
> 存储备份之家
> 存储文档中心
> 存储业界
> 服务器及硬件技术
> MySQL
> Sybase
> Oracle
> PostgreSQL
> DB2
> Informix
> Web服务器
> Mail服务器
> FTP服务器
> DNS服务器
> Proxy服务器
> LDAP
> VPN
> Lotus
> Samba
> 金融行业
> 电信行业
> 互联网行业
> 制造行业
> 医卫行业
> 教育行业
> 媒体娱乐行业
> 电子政务
> 信息安全
> 交通行业
> IT业界新闻与评论
> IT职业生涯
> IT培训与认证
> IT二手大厅
> IT图书与评论
> 清茶斋
> 投资理财
> 运动地带
> 北京2008奥运专版
> 快乐数码摄影
> 影音文字
> English Forum
> 游戏玩家
> 旅游天下
> IT爱车族
> CU活动专区
> 站务交流
> 博客站务交流区
> 下载频道交流区
> 空间圈子交流区
最近访问的论坛 ...
时代域名主机托管全面特惠
|
CU积分兑换详情
|
100积分:谈谈您对校园网建设的体会
|
CU《奥运之春》摄影获奖作品展示
|
《奥运之夏》摄影赛开始
|
[
打印
] [
订阅
] [
收藏
] [
推荐给朋友
] [
本帖文本页
]
super_ebo
圣骑士
UID:639994
注册:2007-11-10
最后登录: 2008-06-07
帖子:
86
精华:0
可用积分:81
信誉积分:
0
专家积分:
0
(本版)
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
1楼
发表于 2008-5-16 23:08
#!/bin/bash
count=0
id=0
while read line
do
((count++))
done < /etc/passwd
IFS=:
/*----------------------------------------------------------
while read name ps uid gid date dir sh
do
if [ $name = "super" ] ----------------可与正确运行,并且有结果,只有一行,那既是名字为super的一行
then
echo hi $name -----------hi super
fi
done </etc/passwd
--------------------------------------------*/
以上程序,执行没有问题,结果为hi super
但是,我把/*———————— 到 ——————————*/这段,换作下面这段,就会不能正确运行,有错误
/**************************************************************
while read name ps uid gid date dir sh
do
if [ $id < $count ] -----------------------不可以正确运行
then
echo -e "$name $uid $gid $dir\n">>$1
((id++))
else
break
fi
done </etc/passwd
*****************************************************************/
我想问,为什么/*———————— 到 ——————————*/这段,我同样读了name,可我也做了$name="super"这样的比较,
而换作了/****** 到 *******/这段, 我使用两个变量作比较,为什么就不行了。
而且,我又try了,这一段
while read name ps uid gid date dir sh
do
if [ $id < $count ] -----------------------不可以正确运行
then
echo hi
((id++))
else
break
fi
done </etc/passwd
也不能够正确运行!!!
我怀疑问题出在了
while read name ps uid gid date dir sh
do
done</etc/passwd
上面了!
请各位帮忙看看!一头雾水阿!!谢谢!
您对本贴的看法:
鲜花[0]
臭蛋[0]
CU可用积分兑换Linux/Unix精品图书
|
《Ubuntu标准教程》书评获奖名单公布
寂寞烈火
老法王
UID:187152
注册:2004-10-1
最后登录: 2008-07-04
帖子:
23139
精华:
5
可用积分:4407
信誉积分:
110
专家积分:
72
(本版)
来自:北京海淀
状态:
...在线...
[
个人空间
] [
短信
] [
博客
]
2楼
发表于 2008-5-16 23:18
干脆说你要干嘛吧
您对本贴的看法:
鲜花[0]
臭蛋[0]
__________________________________
~\____/\../\
/\../\____/~
{ ___(pq)
(pq)____}
RedHat Gnu/Linux 9
GNU{Bash3.2.0 Grep2.5.1 Sed4.05 Awk3.1.1}
我宠我爱狗友会
CU可用积分兑换Linux/Unix精品图书
|
《Ubuntu标准教程》书评获奖名单公布
super_ebo
圣骑士
UID:639994
注册:2007-11-10
最后登录: 2008-06-07
帖子:
86
精华:0
可用积分:81
信誉积分:
0
专家积分:
0
(本版)
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
3楼
发表于 2008-5-16 23:39
就是想把/etc/paswd的东西读出来 用IFS=:分解
之后,把usernane , uid,gid, home dir
存到一个新的文件中
您对本贴的看法:
鲜花[0]
臭蛋[0]
CU可用积分兑换Linux/Unix精品图书
|
《Ubuntu标准教程》书评获奖名单公布
寂寞烈火
老法王
UID:187152
注册:2004-10-1
最后登录: 2008-07-04
帖子:
23139
精华:
5
可用积分:4407
信誉积分:
110
专家积分:
72
(本版)
来自:北京海淀
状态:
...在线...
[
个人空间
] [
短信
] [
博客
]
4楼
发表于 2008-5-16 23:42
QUOTE:
原帖由
super_ebo
于 2008-5-16 23:39 发表
就是想把/etc/paswd的东西读出来 用IFS=:分解
之后,把usernane , uid,gid, home dir
存到一个新的文件中
这样不可以么
cut -f1,3,4,6 -d":" /etc/passwd >newfile
您对本贴的看法:
鲜花[0]
臭蛋[0]
__________________________________
~\____/\../\
/\../\____/~
{ ___(pq)
(pq)____}
RedHat Gnu/Linux 9
GNU{Bash3.2.0 Grep2.5.1 Sed4.05 Awk3.1.1}
我宠我爱狗友会
CU可用积分兑换Linux/Unix精品图书
|
《Ubuntu标准教程》书评获奖名单公布
super_ebo
圣骑士
UID:639994
注册:2007-11-10
最后登录: 2008-06-07
帖子:
86
精华:0
可用积分:81
信誉积分:
0
专家积分:
0
(本版)
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
5楼
发表于 2008-5-16 23:49
可以,但是我主要是想学习一下IFS的作用!
所以用IFS=: ,用来分解以下/etc/passwd
于是,就出现了我的问题!
您对本贴的看法:
鲜花[0]
臭蛋[0]
CU可用积分兑换Linux/Unix精品图书
|
《Ubuntu标准教程》书评获奖名单公布
super_ebo
圣骑士
UID:639994
注册:2007-11-10
最后登录: 2008-06-07
帖子:
86
精华:0
可用积分:81
信誉积分:
0
专家积分:
0
(本版)
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
6楼
发表于 2008-5-17 00:02
回复 #4 寂寞烈火 的帖子
请前辈指点!
您对本贴的看法:
鲜花[0]
臭蛋[0]
CU可用积分兑换Linux/Unix精品图书
|
《Ubuntu标准教程》书评获奖名单公布
寂寞烈火
老法王
UID:187152
注册:2004-10-1
最后登录: 2008-07-04
帖子:
23139
精华:
5
可用积分:4407
信誉积分:
110
专家积分:
72
(本版)
来自:北京海淀
状态:
...在线...
[
个人空间
] [
短信
] [
博客
]
7楼
发表于 2008-5-17 00:14
QUOTE:
原帖由
super_ebo
于 2008-5-16 23:49 发表
可以,但是我主要是想学习一下IFS的作用!
所以用IFS=: ,用来分解以下/etc/passwd
于是,就出现了我的问题!
ifs=$IFS
while read line;do set -- $line;echo $1 $3 $4 $6;done</etc/passwd
IFS=$ifs
您对本贴的看法:
鲜花[0]
臭蛋[0]
__________________________________
~\____/\../\
/\../\____/~
{ ___(pq)
(pq)____}
RedHat Gnu/Linux 9
GNU{Bash3.2.0 Grep2.5.1 Sed4.05 Awk3.1.1}
我宠我爱狗友会
CU可用积分兑换Linux/Unix精品图书
|
《Ubuntu标准教程》书评获奖名单公布
super_ebo
圣骑士
UID:639994
注册:2007-11-10
最后登录: 2008-06-07
帖子:
86
精华:0
可用积分:81
信誉积分:
0
专家积分:
0
(本版)
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
8楼
发表于 2008-5-17 00:50
我就想读/etc/passwd的前10行!
是不是要在while read line
之中加入if呢?
我做了如下实验
id=0
IFS=:
while read name ps uid gid dir sh
do
if [ $id < 10 ]
then
echo $name $uid $gid $dir
else
break
fi
done
结果,错误!!!
您对本贴的看法:
鲜花[0]
臭蛋[0]
CU可用积分兑换Linux/Unix精品图书
|
《Ubuntu标准教程》书评获奖名单公布
寂寞烈火
老法王
UID:187152
注册:2004-10-1
最后登录: 2008-07-04
帖子:
23139
精华:
5
可用积分:4407
信誉积分:
110
专家积分:
72
(本版)
来自:北京海淀
状态:
...在线...
[
个人空间
] [
短信
] [
博客
]
9楼
发表于 2008-5-17 01:25
QUOTE:
原帖由
super_ebo
于 2008-5-17 00:50 发表
我就想读/etc/passwd的前10行!
是不是要在while read line
之中加入if呢?
我做了如下实验
id=0
IFS=:
while read name ps uid gid dir sh
do
if [ $id < 10 ]
then
echo $name $u ...
[Copy to clipboard]
[
-
]
CODE:
awk -F: 'NR<11'
非要你那样的话
[Copy to clipboard]
[
-
]
CODE:
ifs=$IFS
IFS=:
while read line;do
((++count))
set -- $line
#echo $1 $3 $4 $6
((count>=10))&&break # if [[ $count >= 10 ]];then break;fi
done</etc/passwd
IFS=$ifs
[
本帖最后由 寂寞烈火 于 2008-5-17 01:34 编辑
]
您对本贴的看法:
鲜花[0]
臭蛋[0]
__________________________________
~\____/\../\
/\../\____/~
{ ___(pq)
(pq)____}
RedHat Gnu/Linux 9
GNU{Bash3.2.0 Grep2.5.1 Sed4.05 Awk3.1.1}
我宠我爱狗友会
CU可用积分兑换Linux/Unix精品图书
|
《Ubuntu标准教程》书评获奖名单公布
super_ebo
圣骑士
UID:639994
注册:2007-11-10
最后登录: 2008-06-07
帖子:
86
精华:0
可用积分:81
信誉积分:
0
专家积分:
0
(本版)
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
10楼
发表于 2008-5-17 11:24
回复 #9 寂寞烈火 的帖子
十分感谢 寂寞烈火 的帮助,和耐心的解答!
请问,set --什么意思?:)
谢谢!
[
本帖最后由 super_ebo 于 2008-5-17 11:50 编辑
]
您对本贴的看法:
鲜花[0]
臭蛋[0]
CU可用积分兑换Linux/Unix精品图书
|
《Ubuntu标准教程》书评获奖名单公布
首页
»
论坛
»
Shell
»
1
2
››
论坛跳转 ...
> Linux论坛
> BSD
> BSD文档中心
> Solaris
> Solaris文档中心
> 互操作专区
> AIX
> AIX文档中心
> AS400
> HP-UX
> HP文档中心
> SCO UNIX
> SCO文档中心
> Tru64 UNIX
> IRIX
> Mac OS X
> C/C++
> Shell
> Java
> Java文档中心
> Php
> Perl
> Python
> Python文档中心
> Web开发
> 软件工程
> 中间件技术
> GUI编程
> 软件配置管理
> VOIP开发技术
> CPU与编译器
> Ruby
> 网络安全
> 网络技术
> 网络技术文档中心
> 存储备份之家
> 存储文档中心
> 存储业界
> 服务器及硬件技术
> MySQL
> Sybase
> Oracle
> PostgreSQL
> DB2
> Informix
> Web服务器
> Mail服务器
> FTP服务器
> DNS服务器
> Proxy服务器
> LDAP
> VPN
> Lotus
> Samba
> 金融行业
> 电信行业
> 互联网行业
> 制造行业
> 医卫行业
> 教育行业
> 媒体娱乐行业
> 电子政务
> 信息安全
> 交通行业
> IT业界新闻与评论
> IT职业生涯
> IT培训与认证
> IT二手大厅
> IT图书与评论
> 清茶斋
> 投资理财
> 运动地带
> 北京2008奥运专版
> 快乐数码摄影
> 影音文字
> English Forum
> 游戏玩家
> 旅游天下
> IT爱车族
> CU活动专区
> 站务交流
> 博客站务交流区
> 下载频道交流区
> 空间圈子交流区
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
个人空间管理
升级个人空间
基本概况
论坛排行
主题排行
发帖排行
积分排行
管理团队
管理统计
Copyright © 2001-2008 ChinaUnix.net All Rights Reserved 联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处
京ICP证041476号
清除 Cookies
-
ChinaUnix
-
Archiver
-
WAP
-
TOP
Processed in 0.042607 second(s), 4 queries , Gzip enabled
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
个人空间管理
升级个人空间
基本概况
论坛排行
主题排行
发帖排行
积分排行
管理团队
管理统计