免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1996 | 回复: 9
打印 上一主题 下一主题

请教【sh -c】的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-15 11:39 |只看该作者 |倒序浏览
我在solaris的csh下,使用一个awk脚本,希望得到“303”,结果像下面这样:(

# sh -c "ls -l /var/adm/messages | awk '{print $5}'"
-rw-r--r--   1 root     root         303  8月 14日  15:09 /var/adm/messages

但是,在sh下,就OK,
# ls -l /var/adm/messages | awk '{print $5}'
303

【sh -c】是不是有什么特殊的地方?请各位大侠指教……

论坛徽章:
0
2 [报告]
发表于 2008-08-15 11:48 |只看该作者
sh -c "ls -l /var/adm/messages | awk '{print \$5}'"

论坛徽章:
0
3 [报告]
发表于 2008-08-15 12:09 |只看该作者
还是不行啊~~

# csh
pw200# /bin/sh -c "ls -l /var/adm/messages | awk '{print \$5}'"
awk: syntax error near line 1
awk: illegal statement near line 1
pw200#

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
4 [报告]
发表于 2008-08-15 12:13 |只看该作者

回复 #3 lokizuo 的帖子

看看你的sh

sh -c "ls -l | sort"输出什么?

论坛徽章:
0
5 [报告]
发表于 2008-08-15 13:00 |只看该作者
pw200# sh -c "ls -l | sort"
-rw-r--r--   1 root     root           0  1月 16日 2008年 noautoshutdown
dr-xr-xr-x   1 root     root           1  8月 11日  13:38 home
dr-xr-xr-x   1 root     root           1  8月 11日  13:38 net
dr-xr-xr-x   6 root     root         512  8月 11日  13:39 vol
dr-xr-xr-x 125 root     root      480032  8月 15日  13:59 proc
drwx------   2 root     root        8192  1月 16日 2008年 lost+found
drwxr-xr-x   2 root     root         512  1月 16日 2008年 TT_DB
drwxr-xr-x   2 root     sys          512  1月 16日 2008年 mnt
drwxr-xr-x   2 root     sys          512  8月 11日  13:38 devices
drwxr-xr-x   2 root     sys         1024  1月 16日 2008年 sbin
drwxr-xr-x   3 root     root         512  3月 31日  19:41 work
drwxr-xr-x   3 root     root         512  6月  5日  10:38 cdrom
drwxr-xr-x   3 root     sys          512  1月 31日 2008年 export
drwxr-xr-x   4 root     root         512  1月 16日 2008年 system
drwxr-xr-x   7 root     bin         5632  1月 16日 2008年 lib
drwxr-xr-x  11 root     sys          512  1月 16日 2008年 platform
drwxr-xr-x  14 root     sys          512  1月 16日 2008年 kernel
drwxr-xr-x  18 root     sys         4608  8月 11日  13:39 dev
drwxr-xr-x  37 bin      bin         1536  8月  8日  12:27 opt
drwxr-xr-x  40 root     sys         1024  1月 16日 2008年 usr
drwxr-xr-x  43 root     sys         1024  4月 11日  10:49 var
drwxr-xr-x  78 root     sys         4608  8月 11日  13:39 etc
drwxrwxrwt   6 root     sys          662  8月 15日  12:32 tmp
lrwxrwxrwx   1 root     root           9  1月 16日 2008年 bin -> ./usr/bin
合計 1034

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
6 [报告]
发表于 2008-08-15 13:14 |只看该作者

回复 #5 lokizuo 的帖子

是你没有引用$, 如何引用请查看你的csh。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
7 [报告]
发表于 2008-08-15 13:29 |只看该作者
可以的呀~~
[local]1[/local]

论坛徽章:
0
8 [报告]
发表于 2008-08-15 16:00 |只看该作者
原帖由 blackold 于 2008-8-15 13:14 发表
是你没有引用$, 如何引用请查看你的csh。


谢谢,这样看似可以了,不过相当
#sh -c 'ls -l /var/adm/messages | awk "'"{print "'"$"'"5}"'"'

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
9 [报告]
发表于 2008-08-15 16:23 |只看该作者

回复 #8 lokizuo 的帖子

你的应该不行吧?
没用过csh, 我在csh下不能像bash一样用\$来引用$。
刚才在csh下做了试验,在我的环境下以下命令得到的结果正确:
  1. $ sh -c "ls -l /var/adm/messages | awk '{print "'$5'"}' "
复制代码

论坛徽章:
0
10 [报告]
发表于 2008-08-18 11:43 |只看该作者
可以的。用了',这样可以再csh解释是不被误转义。
这样用也可以:/bin/sh -c "ls -l /var/adm/messages |awk '{print "\$5"}'"
在csh下确实有很多意想不到的问题~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP