LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 691|回复: 7

string index问题[脚本解决]

[复制链接]
发表于 2004-6-25 06:09:08 | 显示全部楼层 |阅读模式
string index问题
在shell script中string index是从0开始还是从1开始?
如果从0开始的话为什么expr index "$string" "$sub"的回值是从1开始.
如果从1开始的话为什么${string:#:#}是从零开始算?

Confusing!!!

还有一个问题
是不是[...]和test相等, 而[[...]]和[...]很象但[[里可以用"><"符号.
那(...)和[...]的关系呢?

谢谢.
发表于 2004-6-25 06:52:43 | 显示全部楼层
应该是从1开始, ${string:0} 表示string本身,但第一个字符从index 1开始。${string:0:1}
[[ ... ]] - extend test command. [[ 是keyword而不是命令,就象if。但是[ 是命令,等同于test。 if test xxx == if [ xxx ]
个人认为[[ ... ]]结构更好一些, 因为可以用很多熟悉的逻辑比较符, 而不用考虑什么-a, -o 等符号。
( ... )是用于fork subshell的, 好象没有见过用在逻辑比较中(除了awk)。
 楼主| 发表于 2004-6-25 07:43:21 | 显示全部楼层
多谢. 那${string:0:1}和${string:1:1}显示有什么区别吗?
((...))和[[...]]等的关系是什么?
发表于 2004-6-25 08:36:15 | 显示全部楼层
当然是不一样。第一个从string中取一个length(缺省取第一个),第二是从string的第一个字符之后取一个length, 自然就是第二个字符了。
((...))是用来取数值运算结果的,根[[ ... ]]好象没有什么关系。
 楼主| 发表于 2004-6-25 08:48:50 | 显示全部楼层
感激不尽. string的那个懂了.
发表于 2004-6-25 08:57:45 | 显示全部楼层
expr index 返回值为 0 时表示失败,因此其 index 规定从 1 开始,否则……:p
发表于 2004-6-25 09:00:25 | 显示全部楼层
expr 的功能 bash 都能实现,且 bash 支持的更好
发表于 2004-6-25 20:06:35 | 显示全部楼层
最初由 生来自由 发表
多谢. 那${string:0:1}和${string:1:1}显示有什么区别吗?
((...))和[[...]]等的关系是什么?

${...}的用法请参阅:
http://www.linuxsir.cn/bbs/showthread.php?threadid=92866
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表