Bash拾遺 變數

2022-05-26 05:18:08 字數 591 閱讀 4324

在《高階bash指令碼程式設計指南》中的4.1節中有這麼個例子:

hello="

a b c d

"echo

$hello # a b c d

echo

"$hello

" # a b c d

當時覺得不可思議,對於第二個echo應該是非常好理解的,而第乙個echo為什麼會把原來變數中的空格消除呢?其實第乙個echo中的$hello變數,由於其含有空格又沒有引號包裹,實際上為echo命令提供了不只乙個引數,做個替換就是:

echo a b  c   d

這就解釋了前面的情況。所以向命令傳遞有空格字元的引數時要特別注意將其用乙個雙引號包裹起來,否則變數中的各個部分就分別作為命令的引數(或者解析成其他命令)了。

這樣看來bash中的變數在使用時(在作為右值時),就只是進行了乙個文字替換,替換後的結果由bash執行

所以在書中有這麼一句話:不像其他程式語言一樣, bash並不對變數區分"型別". 本質上, bash變數都是字串. 但是依賴於具體的上下文, bash也允許比較操作和整數操作. 其中的關鍵因素就是, 變數中的值是否只有數字.

asp知識拾遺

最近做的乙個小 碰到了許多問題,能解決的都解決了,還有的沒辦法就找了替代的解決辦法.下面收集一下 1 在選擇了一系列的checkbox後的提交表單提交後,會獲取到name1,逗號,空格,name2,逗號,空格,結果,系統需要獲取這些值,我用了以下 實現.uname request.form user...

Linux同步拾遺

一般情況下,執行緒在主題函式退出的時候會自動終止,但同時也可以因為接收到另乙個執行緒發來的終止請求而強制終止。執行緒取消的方法是向目標執行緒發cancel訊號,但如何處理cancel訊號則由目標執行緒自己決定,或者忽略,或者立即終止,或者繼續執行到cancelation point 取消點 由不同c...

面試拾遺 1

本文用來把我面試時遇到的沒有弄明白的問題記錄下來。一 資料庫的normalization與denormalization normalization的目的之一是減少冗餘的過程,之二是方便資料庫查詢語言的使用。什麼叫做方便資料庫查詢語言的使用呢?也就是消除update,insertion及deleti...