使用 bash 替换数组中的子字符串

使用 bash 替换数组中的子字符串

我得到了什么:

array[0]="Programm is Running"
array[1]="programm is down"

我想要的是:

array[0]="Programm is \e[0;32mRunning\e[0m"
array[1]="programm is \e[0;31mDown\e[0m"

这将使事情变得更加丰富多彩(使用命令echo -e),至少我希望如此。我尝试用以下代码替换它:

array[$i]=${array[$i]//"running"/"\e[0;32mrunning\e[0m"}
array[$i]=${array[$i]//"down"/"\e[0;31mdown\e[0m"}

这不起作用。错误消息:

0403-011 指定的替换对于该命令无效。

为什么会发生这种情况?我需要做哪些改变?

答案1

看来你搞错了 Running 与 running 的情况,以下对我有用

    array[0]="Programm is running"
    array[1]="Programm is down"

            for i in 0 1; do
            array[$i]=${array[$i]//"running"/"\e[0;32mrunning\e[0m"}
            array[$i]=${array[$i]//"down"/"\e[0;31mdown\e[0m"}
    done
    echo ${array[0]}
    echo ${array[1]}

生产

    Programm is \e[0;32mrunning\e[0m
    Programm is \e[0;31mdown\e[0m

使用 echo -e 而不是仅仅使用 echo,它会生成正确的彩色文本,但是,手动修复比每次运行时重新修复更容易。

相关内容