我正在尝试在 bash 中进行一些文件管理, 我有这种格式的字符串:
1 dir/hello.txt
2 dir2/bar.jpg
当我运行此替换时:
${FOO/[:space:]*/Hello}
我得到这个结果:1 dir/hHello
目标是替换第一个之后的所有内容 空间(包括空间)与
Hello
对我来说似乎是一个错误。在这种情况下,请确认并 我会把这个问题带到上游。
你几乎猜对了。来自您的引用:
在
和[
中,可以使用语法]
指定字符类,其中[:class:]
是 POSIX 标准中定义的以下类之一:[...]class
所以,你需要在方括号上加倍:
s='1 dir/hello.txt'
echo "${s/[[:space:]]*/Hello}"
产生
1Hello
。