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.
解释您的数字代码
我在让我的代码工作时遇到问题:
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.