请教一个关于冒号的问题

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
fengjie
帖子: 130
注册时间: 2008-03-19 14:20

请教一个关于冒号的问题

#1

帖子 fengjie » 2010-08-07 1:40

代码: 全选

#!/bin/bash
Total=012345678901234567890123456789
echo ${Total:17}
小弟刚看别人的程序,里面有类似上面的一段代码,百思不得其解,
请问上面Total与17之间的冒号有什么作用?17又是什么意思呢?
主板:ASUS P8Z77-V
CPU:Intel 酷睿i3 3200
内存:ADTA DDRⅢ 1600 8G
显卡:Intel® HD Graphic
声卡:Realtek ALC 892
有线网卡:Intel® 82579V
无线网卡:Qualcomm Atheros AR9485
硬盘:WDC WD6401AALS
电源:长城ATX-350SD静音大师
显示器:Samsung S24A350H
头像
trigger
帖子: 1604
注册时间: 2006-10-25 18:08

Re: 请教一个关于冒号的问题

#2

帖子 trigger » 2010-08-07 8:45

运行一下,数数
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。
头像
fengjie
帖子: 130
注册时间: 2008-03-19 14:20

Re: 请教一个关于冒号的问题

#3

帖子 fengjie » 2010-08-07 12:30

多谢楼上,终于明白什么意思了,但是不知道还有没有其它的用法
主板:ASUS P8Z77-V
CPU:Intel 酷睿i3 3200
内存:ADTA DDRⅢ 1600 8G
显卡:Intel® HD Graphic
声卡:Realtek ALC 892
有线网卡:Intel® 82579V
无线网卡:Qualcomm Atheros AR9485
硬盘:WDC WD6401AALS
电源:长城ATX-350SD静音大师
显示器:Samsung S24A350H
头像
trigger
帖子: 1604
注册时间: 2006-10-25 18:08

Re: 请教一个关于冒号的问题

#4

帖子 trigger » 2010-08-07 12:39

fengjie 写了:多谢楼上,终于明白什么意思了,但是不知道还有没有其它的用法
$ echo "012345678901234567890123456789" | cut -c 18-
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。
头像
fengjie
帖子: 130
注册时间: 2008-03-19 14:20

Re: 请教一个关于冒号的问题

#5

帖子 fengjie » 2010-08-07 12:46

trigger 写了:
fengjie 写了:多谢楼上,终于明白什么意思了,但是不知道还有没有其它的用法
$ echo "012345678901234567890123456789" | cut -c 18-
手机上的系统,cut被精简掉了……
主板:ASUS P8Z77-V
CPU:Intel 酷睿i3 3200
内存:ADTA DDRⅢ 1600 8G
显卡:Intel® HD Graphic
声卡:Realtek ALC 892
有线网卡:Intel® 82579V
无线网卡:Qualcomm Atheros AR9485
硬盘:WDC WD6401AALS
电源:长城ATX-350SD静音大师
显示器:Samsung S24A350H
头像
trigger
帖子: 1604
注册时间: 2006-10-25 18:08

Re: 请教一个关于冒号的问题

#6

帖子 trigger » 2010-08-07 12:56

晕,cut都没有,估计好多都没有
$ expr substr 012345678901234567890123456789 18 13
:em20
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。
头像
fengjie
帖子: 130
注册时间: 2008-03-19 14:20

Re: 请教一个关于冒号的问题

#7

帖子 fengjie » 2010-08-07 13:22

trigger 写了:晕,cut都没有,估计好多都没有
$ expr substr 012345678901234567890123456789 18 13
:em20
这个有,嘿嘿

代码: 全选

$ Total="123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"
$ expr substr $Total 15 5
$ expr: syntax error
中间有空格就不行了?
主板:ASUS P8Z77-V
CPU:Intel 酷睿i3 3200
内存:ADTA DDRⅢ 1600 8G
显卡:Intel® HD Graphic
声卡:Realtek ALC 892
有线网卡:Intel® 82579V
无线网卡:Qualcomm Atheros AR9485
硬盘:WDC WD6401AALS
电源:长城ATX-350SD静音大师
显示器:Samsung S24A350H
头像
trigger
帖子: 1604
注册时间: 2006-10-25 18:08

Re: 请教一个关于冒号的问题

#8

帖子 trigger » 2010-08-07 13:53

代码: 全选

$ Total="123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"
$ expr substr $Total 15 5
expr: 语法错误
$ expr substr "$Total" 15 5
EFGHI
因为Total事实上的值没有“”,所以变量传递之后你的命令变为

代码: 全选

expr substr 123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ 15 5
把‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’当成参数了,所以语法错误
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 请教一个关于冒号的问题

#9

帖子 aerofox » 2010-08-07 18:20

代码: 全选

#!/bin/bash
Total=012345678901234567890123456789
echo ${Total:17}          #结果:7890123456789
echo ${Total:17:2}        #结果:78
echo ${Total:0-4}         #结果:6789
echo ${Total:0-4:2}       #结果:67
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 请教一个关于冒号的问题

#10

帖子 eexpress » 2010-08-07 22:21

man bash吧。
这讨论啥。
● 鸣学
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 请教一个关于冒号的问题

#11

帖子 tusooa » 2010-08-13 0:35

代码: 全选

tlcr: 0 庚寅年七月初四日 00:30:42 ~
>> echo ${foo:5}
6789
tlcr: 0 庚寅年七月初四日 00:30:44 ~
>> echo ${foo:5:${#foo}}
6789
就是截取字串阿。

代码: 全选

] ls -ld //
回复