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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM