我试图从字符串中删除前 n 个字符,但出现以下错误:
line 5: ${ echo $data | sed -r 's/.{ $index0 }//' }: bad substitution
当在 bash 脚本中使用此代码时:
data=${ echo $data | sed -r 's/.{$index}//' }
有什么更正吗?
答案1
出色地,
- 命令替换是
$( ... )
,不是${ ... }
。常规括号,而不是花括号。 - 你有
$index
单引号,所以它会不是被外壳扩展。你需要为此加双引号。 $data
在 echo 中添加双引号,如果data
包含空格或全局字符,则会有所不同- 在 bash 中,您可以使用子字符串扩展
data=${data:$index}
来从字符串前面删除一些字符。