Bash 内置(不是 SED!)使用八进制值搜索和替换

Bash builtin (not SED!) search and replace using octal values

我在让我的代码工作时遇到问题:

for (( c=1; c<=$DirsArrCnt; c=c+$OneDirArrCnt )); do 
    # Replace every occurence of "/" (ASCII d47 o057) in path with "^A" (ASCII 1)
    Hold="${DirsArr[$c]}"
    DirsArr[c]="${Hold//7/[=11=]1}"
done

最初我跳过了 Hold 变量并直接使用数组元素,但认为这是问题所在。

我指定的八进制值是否正确?我相信 57 是“/”的八进制值,对吗?

我想这就是你想要的:

DirsArr[c]="${Hold//$'7'/$'[=10=]1'}"

您使用的语法将 [=11=] 解释为文字 0(即与不使用反斜杠相比没有任何不同)。您需要 C 风格的字符串才能让 shell.

解释您的数字代码