gpt4 book ai didi

linux - bash 如何从字符串中减去字符

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:34:31 26 4
gpt4 key购买 nike

我一直在尝试获取一个字符串以在同一行上单独输出每个字符(在 bash 中使用奇特的渐变效果),尽管下标部分的某些内容不太正确:

str="foobar"
n=0 ; for i in {16..21} {21..16} ; do
echo -ne "\033[48;5;${i}m ${str:str[i-n]:n++} \033[0m" ;
sleep 1;
done

输出:

f  fo  foo  foob  fooba  foobar  foobar  foobar  foobar  foobar  foobar 

但我希望得到:

f  o  o  b  a  r

所以可能是我的方法不对,或者我遗漏了一些明显的东西?

最佳答案

在表达式${str:str[i-n]:n++}中,str[i-n] 的数值实际上是 0。循环步骤中的部分计算值如下所示:

  • ${str:0:1}
  • ${str:0:2}
  • ${str:0:3}
  • ${str:0:4}
  • ...等等

${var:start:count} 中第二个 : 之后的值是从起始位置开始计算的字符数。由于起始位置永远不会改变,因此您会得到 f、fo、foo、foob 等等。

如果你想得到 f, o, o, b, a, r,那么你需要将起始位置向前移动,并保持计数为 1,使用这个表达式:

${str:n++:1}

关于linux - bash 如何从字符串中减去字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39419646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com