我有一个字符串如下。我想访问其中的单个字符并比较字符。如何使用ksh这样做?以下只是伪代码
str="hello"
if [[ str[i] == str[j] ]] ; then
print yes
fi
答案 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使它们正确是很痛苦的,但是如果有问题的字符是空格,那么如果没有引号,则此测试将失败。