ПРИМЕЧАНИЕ: в приведенных ниже примерах я использую один ведущий $
для обозначения приглашения оболочки. Выводится любая строка, которая не начинается с $
.
Ваш первоначальный пример содержит ряд проблем, не связанных со значением подкоманды index в GNU expr, я собираюсь пропустить их и просто сосредоточиться на сам индекс. Как указывает @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