繁体   English   中英

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//\057/\001}"
done

最初,我跳过Hold变量,直接使用array元素,但是以为这是问题就排除了。

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

我想这就是你想要的:

DirsArr[c]="${Hold//$'\057'/$'\001'}"

您使用的语法将\\0解释为文字0 (即,与不使用反斜杠相比,没有什么不同)。 您需要C样式的字符串以使Shell解释您的数字代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM