Ubuntu系统中使用echo向文件写入内容

  

问题描述:  

//新建一个.c文件
# touch hello.c
//用echo向hello.c写入内容
# echo "\"hello world!\"" >> hello.c
// 结果报错:
bash: !\: event not found

 

分析原因:

输入:
# echo
$-
得到:
himBHs

确认是由于 H - histexpand 模式打开了而导致。

命令行下,双引号里面用了 ! 的话,Shell 会以为要执行历史展开,从而导致报错。

关于 himBH ,如果不知道啥意思的话,可以戳 《 Linux himBH 简析 》 了解。

 

解决方法:

1、关闭 histexpand

# set +H
# echo $-
得到:
himBs

再次执行echo命令
# echo "\"hello world!\"" >> hello.c
结果成功

查看hello.c文件内容
# cat hello.c
输出:
"hello world!"

 

2、使用单引号

 假设H - histexpand 模式仍处于打开状态,可以使用单引号代替双引号来解决这个问题

// 用echo向hello.c写入内容
# echo '"hello world!"' >> test.c

// 查看hello.c文件内容
# cat hello.c
输出:
"hello world!"

我们注意到在单引号中,连双引号'“' 都不需要加转义符'\'了。

为什么双引号执行会出错,而单引号就不会呢 ?
关于 Linux 各种引号之间的使用区别,可戳 《 Linux 反引号、单引号、双引号简析 》 了解。

 

参考文章:

https://blog.csdn.net/weixin_44648216/article/details/104062926?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3

posted @ 2020-04-12 15:43  夏洛蒂  阅读(4842)  评论(0编辑  收藏  举报