在bash脚本中替换字符串给出错误

时间:2014-01-06 19:44:00

标签: linux string bash shell

我正在尝试使用bash脚本替换字符串中的特定字符,但我失败了。

我有以下代码

    line=${array[1]}
    echo ${array[1]}
    echo ${array[0]}
    echo `expr index "$line" *`

行或数组[1]包含以下字符串/path/v1/module/order/*,我想用另一个文件中的某个输入值替换*

但是我在最后一行得到了错误......我尝试使用行变量甚至是数组。错误是 expr: syntax error

P.S:我正在使用bash版本3

2 个答案:

答案 0 :(得分:2)

只使用bash parameter expansion

line='/path/v1/module/order/*'
repl='some other value'
newvalue=${line/\*/$repl}
echo "$newvalue"
/path/v1/module/order/some other value

答案 1 :(得分:1)

在调用expr之前,未加引号的星号将扩展为文件名列表。使用

echo $( expr index "$line" "*" )

$(...)不是必需的,但建议代替反引号。)