Chinaunix

标题: linux下tr的一个问题 [打印本页]

作者: 侯上校    时间: 2011-12-19 08:33
标题: linux下tr的一个问题
#!/bin/sh
echo -n "Can you write device drivers?"
read answer
answer='echo $answer | tr [a-z][A-Z]'
if [ "$answer" = Y ]
then
        echo "Wow , you must be very skilled"
else
        echo "Neither can I, I'm just an example shell script"
fi



以上执行的结果,不是我想要的结果,,,,,

answer='echo $answer | tr [a-z][A-Z]'  这句错在那里了?
作者: MMMIX    时间: 2011-12-19 09:10
本帖最后由 MMMIX 于 2011-12-19 09:30 编辑

回复 1# 侯上校

Try this:

  1. echo abc | tr a-z A-Z
复制代码
or this:

  1. echo abc | tr [:lower:] [:upper:]
复制代码

作者: yaowinner    时间: 2011-12-19 10:21
楼上的方法很有道理
作者: 侯上校    时间: 2011-12-19 19:29
answer='echo $answer | tr [a-z]  [A-Z]'
$answer得到的结果不是标准输入的,而就是上面的这个字符串?
这个是怎么回事?

作者: 侯上校    时间: 2011-12-19 19:31
我把那个空格给没写,可是写成你的那样还是错呀??
作者: MMMIX    时间: 2011-12-19 20:24
這是正确的,你自己對比下:

  1. #!/bin/sh
  2. echo -n "Can you write device drivers?"
  3. read answer
  4. answer=`echo $answer | tr a-z A-Z`
  5. if [ "$answer" = Y ]
  6. then
  7.         echo "Wow , you must be very skilled"
  8. else
  9.         echo "Neither can I, I'm just an example shell script"
  10. fi
复制代码

作者: 侯上校    时间: 2011-12-20 07:30
广告杀手  的兄弟非常感谢你!!!!


我是新手,刚刚学习shell编程!!!
作者: embeddedlwp    时间: 2011-12-20 07:56
学习shell 哪本书经典啊?
作者: 侯上校    时间: 2011-12-20 08:31
sed 's/\(.*\)\(.\)$/\2/'
指点一下,这个正则表达的是什么意思??
作者: MMMIX    时间: 2011-12-20 08:47
侯上校 发表于 2011-12-20 08:31
sed 's/\(.*\)\(.\)$/\2/'
指点一下,这个正则表达的是什么意思??

取一行的最后一个字符。
作者: MMMIX    时间: 2011-12-20 08:48
embeddedlwp 发表于 2011-12-20 07:56
学习shell 哪本书经典啊?

Learning the bash Shell 不错:http://shop.oreilly.com/product/9780596009656.do
作者: 侯上校    时间: 2011-12-20 10:35
可否逐一解释一下?
非常感谢!!!
作者: 侯上校    时间: 2011-12-20 11:28
麻烦广告杀手兄弟详细的指点一下,sed 's/\(.*\)\(.\)$/\2/'中每一步的意思???
作者: 侯上校    时间: 2011-12-20 11:29
哇哇,是一个英文网址,正好可以学习一下英文!!!!
非常感谢!!!
作者: MMMIX    时间: 2011-12-20 12:17
侯上校 发表于 2011-12-20 11:28
麻烦广告杀手兄弟详细的指点一下,sed 's/\(.*\)\(.\)$/\2/'中每一步的意思???

http://shop.oreilly.com/product/9781565922259.do
作者: 侯上校    时间: 2011-12-21 09:53
广告杀手 的兄弟指点一下,想好好的学习一下linux了,指点一下方向,非常感谢!!!
作者: MMMIX    时间: 2011-12-21 10:25
侯上校 发表于 2011-12-21 09:53
广告杀手 的兄弟指点一下,想好好的学习一下linux了,指点一下方向,非常感谢!!!

Linux 是拿来用的,不是拿来学的,所以,还是先把你的日常系统换成 Linux 吧。
作者: 侯上校    时间: 2011-12-21 19:15
系统我已经换成debian了,
作者: defcon    时间: 2011-12-21 21:05
sed 's/\(.*\)\(.\)$/\2/'
主要用寄存器这个结构\(\), 在小括号里面的值可以保存下来,存储到后面的输出,\是转义字符,括号里面的.*是0个或者多个任意字符,后面括号里面的意思是一个任意字符,$是匹配行尾,然后后面的\2 就是将2号寄存器里面的内存输出

我也是刚学习shell,共同努力
作者: MMMIX    时间: 2011-12-21 21:07
侯上校 发表于 2011-12-21 19:15
系统我已经换成debian了,

Linux 本身的使用,倒也沒多少:掌握一個文本編輯器(Vim, Emacs, ...),熟悉 Shell 編程(中等即可),對 Linux 系統管理有個全面的了解(初等即可)。下一步就看你對哪一方面感興趣,然後找資料深入學。
作者: 侯上校    时间: 2011-12-22 18:51
  1. MMMIX MMMIX 当前离线 空间积分0 信誉积分113 UID20342513阅读权限100积分104086帖子14934精华1可用积分104086 专家积分55 在线时间1916 小时注册时间2005-11-28最后登录2011-12-22.

  2. 广告杀手

复制代码
  1. defcon defcon
复制代码
上面的兄弟怎么联系?以后方便我们相互学习linux!!!
作者: MMMIX    时间: 2011-12-22 19:55
侯上校 发表于 2011-12-22 18:51
上面的兄弟怎么联系?以后方便我们相互学习linux!!!

有問題就在論壇發貼吧
作者: 侯上校    时间: 2011-12-24 07:53
大家介绍一本学习vim比较经典的书籍??

非常感谢!!
作者: 侯上校    时间: 2011-12-24 08:09
root1:~/nh/sedAndAwk # grep '10\{2,4\}' RX
1001
10001
100001
1000001
10000001
以上这个不应该输出4个0以上的呀,怎么都输出了???
作者: MMMIX    时间: 2011-12-24 09:30
侯上校 发表于 2011-12-24 08:09
root1:~/nh/sedAndAwk # grep '10\{2,4\}' RX
1001
10001

Try

  1. grep '10\{2,4\}1' RX
复制代码

作者: 侯上校    时间: 2011-12-24 10:17
  1. 01.grep '10\{2,4\}1' RX
复制代码
为什么后面还需要加1呢?

指点一下关于vim的学习!!谢谢
作者: MMMIX    时间: 2011-12-24 12:14
本帖最后由 MMMIX 于 2011-12-24 12:16 编辑
侯上校 发表于 2011-12-24 10:17
为什么后面还需要加1呢?

指点一下关于vim的学习!!谢谢


10{2,4} 這個 regexp 什麼意思?1後面跟 2 至 4 個零,那麼 1000001 有沒有 1 後面 2 至 4 個零這種子串?自然是有的,那麼匹配就會成功。

至於 Vim,那就是多用,多看/查它的文檔。
作者: seeker0320    时间: 2011-12-27 21:51
求解……

1926314498 发表于 2011-12-27 19:29
问题是羽毛球,一定要把它扣在对方场地里;





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2