bash shell里反斜杠(backslash)和字符串原文输出(无转义)
浏览:6505次 出处信息
逐行读文件一般的写法如下:
以下是代码片段: cat filename | while read line; do echo $line; done |
看上去没有什么问题, 而且是网上的同学都让你这么读. 实则有潜在问题很难发现.
我们知道echo 里是默认有转义的,一个"\"反斜杠默认不显示,两个则显示一个,如果你的file里有如下字符
以下是引用片段: \s\\s\s |
用上述的代码则输出:
以下是引用片段: s\ss |
这着实让我头痛...
在Baidu和google里搜索没有合适的结果,只能自己分析了.
分析
应该不是echo的问题. echo只是输出端, 每个语言的输出都有各自的转义, 举例即是如果变量用单引号声明则是原文输出, 那么上面的line是个变量.
所以问题自然在要么是cat么,要么是read有问题.
测试及结论
cat file里的文件出来仍然是原文\s\\s\s
考虑是否是read有问题. help read出来的文档里是有参数可查的. 查到是参数"r".
以下是引用片段: If the -r option is given, this signifies `raw’ input, and backslash escaping is disabled. |
最后原文输出文件的内容代码如下:
以下是代码片段: cat filename | while read -r line; do echo $line; done |
建议继续学习:
- Bash的模式和配置文件加载 (阅读:23111)
- Bash脚本15分钟进阶教程 (阅读:7201)
- Bash 小技巧:给目录加上书签,快速切换目录 (阅读:6250)
- grep 正则表达式选项要记得转义 (阅读:4887)
- Bash如何取得当前正在执行的脚本的绝对路径? (阅读:4549)
- 【总结】美化bash,python的soap client,python获取系统编码函数 (阅读:4116)
- Bash Shell 快捷键 (阅读:3894)
- bash下利用trap捕捉信号量 (阅读:3666)
- .bash_pfofile、.bash_logout和.bashrc (阅读:3299)
- 正则转义符汇总 (阅读:3059)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
后一篇:History 命令经典用法15例 >>
文章信息
- 作者:Rank 来源: never-online
- 标签: bash 反斜杠 转义
- 发布时间:2011-02-15 22:57:47
建议继续学习
近3天十大热文
- [11] 解决 ubuntu 的 /etc/hosts
- [9] 文言文白话文互转:文言文转白话文(现代文),
- [8] 用邻接表实现无向图
- [7] 海量数据面试题举例
- [7] Http/2知识图谱
- [7] 领导需要比下属更懂技术吗?
- [6] 近场通信 vs. 低功耗蓝牙:如何抉择
- [6] 一个 VLA (可变长度数组)的实现
- [6] arduino-蓝牙各种版本类型及费用对比
- [6] 聚类算法之ISODATA