0

我尝试了以下方法:

wordindex () {
alias myStr=$1
myArr=($myStr)
cnt=0
for x in "${myArr[@]}"
do
        ((++cnt))
        if [[ $x == "$2" ]]
        then
                break
        fi
done
echo $cnt
}

但这种行为似乎非常不可预测。mac 终端与 linux shell 的结果也不同。任何帮助表示赞赏!

4

1 回答 1

1

我没有看到任何错误。确保你没有使用 /bin/sh 来运行你的脚本——那里有特定于 bash 的东西。

我会这样写:

wordindex () {
    words=( ${!1} )
    for ((i=0; i < ${#words[@]}; i++)); do
        if [[ ${words[i]} == $2 ]]; then
            echo $i
            break
        fi
    done
}
str="hello world foo bar"
wordindex str foo
2
于 2013-10-15T19:09:21.383 回答