首页 > 解决方案 > Linux Bash expr 索引命令

问题描述

我正在研究index这种情况下的工作原理,我知道expr通常如何工作,但不与index.

例如:

X=“Hello World”, S=“acegiklnor”
echo 'expr index $S "$X"'

这个例子的输出是什么?它是如何在这里工作的?

标签: linuxbash

解决方案


注意:在下面的示例中,我使用单个前导$来指示 shell 提示。任何不以开头的行$都会输出。

您的初始示例包含许多与 GNU expr 中的 index 子命令的含义无关的问题,我将跳过它们并只关注 index 本身。正如@chepner 指出的那样,其他实现expr不具备该index功能,例如在 OS X 上。

如果您阅读帮助消息,expr您可以看到index操作。

$ expr --help | grep index
  index STRING CHARS         index in STRING where any CHARS is found, or 0

使用您的示例

$ X="Hello World"
$ S="acegiklnor"

$ expr index "$X" "$S"
2

2 是 中字母的从 1 开始的e索引Hello World

如果您要求输入字符串中不存在的字母,则结果将为零(并且 expr 的退出状态将为1,表示退出不成功)。

$ expr index "$X" "z"
0

如果第二个参数是空字符串,结果是一样的。

$ expr index "$X" ""
0

推荐阅读