访问字符串中的单个字符以获取ksh

时间:2014-01-06 16:50:35

标签: ksh

我有一个字符串如下。我想访问其中的单个字符并比较字符。如何使用ksh这样做?以下只是伪代码

str="hello"

if [[ str[i] == str[j] ]] ; then
    print yes
fi

1 个答案:

答案 0 :(得分:0)

${str:0:1}是第0个字符,${str:1:1}是第一个,等等。这些是从给定偏移量开始的长度为1的字符串(第一个冒号后面的数字指定偏移量,后面的数字是第二个冒号指定长度)。要比较它们,请使用test:

if test "${str:0:1}" = "${str:1:1}"; then ...

请注意,在ksh中,您不能像在评论中建议的那样使用变量作为偏移或长度,但该语法将在bash中起作用。在ksh中,您可能需要诉诸eval

if eval test \${str:$i:0} = \${str:$j:0}; then ...

请注意,这表明了eval的一个问题。我已经删除了引号,因为使用eval使它们正确是很痛苦的,但是如果有问题的字符是空格,那么如果没有引号,则此测试将失败。