当我用一个子字符串替换另一个子字符串(如本文档中所述)打印变量时,它的行为正确:
stringZ='abc - 123'
echo $stringZ # abc - 123
echo ${stringZ/ - /test} # abctest123
Run Code Online (Sandbox Code Playgroud)
但是,如果我从文件名中获取字符串,则完全忽略替换:
for f in mp3/*; do
stringZ=$(basename $f)
echo $stringZ # abc - 123.txt
echo ${stringZ/ - /test} # abc - 123.txt
done
Run Code Online (Sandbox Code Playgroud)
如何替换从文件名派生的变量中的子字符串?