重擊版本:
debian@debian:~$ bash --version |grep release
GNU bash, version 5.1.4(1)-release (x86_64-pc-linux-gnu)
echo 中的變數擴展:
debian@debian:~$ a=apple
debian@debian:~$ echo '"'$a'
'
"apple
debian@debian:~$
我輸入'"'$a'andnewline和',echo 將其決議為三個部分'"', $a, 'newline', 所以它是", apple, 。\n我分析的內容與輸出相同。現在洗掉echo以查看會發生什么:
終端中的變數擴展:
debian@debian:~$ '"'$a'
> '
bash: $'"apple\n': command not found
為什么終端將其決議為$'"apple\n'?
uj5u.com熱心網友回復:
當您按 Enter 向 shell 發送命令列時,它會執行各種擴展(歷史、別名、引數等),從而產生一系列單詞。要執行的命令的名稱是該結果中不包含 a =(或不是預定義修飾符,如time)的第一個單詞。
在第一個例子中,第一個這樣的詞是echo,后面的詞是引數。換行符被寫入終端,終端通過將游標移動到下一行的開頭來“顯示”它。
在第二個示例中,單個單詞$'"apple\n'是第一個這樣的單詞。這$'...'就是 shell 如何在其錯誤訊息中顯示帶有不可列印字符的單詞。決定這樣做會比
bash: "apple
: command not found
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/471557.html
上一篇:如何將逐行文本寫入csv檔案
