使用位置索引的 Bash 字符串字符分配

使用位置索引的 Bash 字符串字符分配

是否可以使用位置索引更改字符串字符。
例如:

Myvar="abcd"

echo ${Myvar:0:1}给出第一个字符“a”
我可以将第一个字符改为“z”吗?

简单尝试将变量分配给 {Myvar:0:1} 没有起作用。

答案1

使用sed流编辑器,您可以执行

echo $Myvar | sed s/./z/0

否则,你可以直接通过

Myvar="abcd"
len=`expr length "$Myvar"`
len=$((len-1))
Ind=2
character="z"

if [[ $Ind -eq 0 ]]
then
    Myvar="$character${Myvar:1}"
elif [[ $Ind -eq $len ]]
then
    Myvar="${Myvar:0:$((len-1))}$character"
else
    Myvar="${Myvar:0:$Ind}$character${Myvar:$((Ind+1))}"
fi
echo $Myvar

然而,正如你所看到的,它不太优雅,如果你只使用sed

相关内容