今天要聊的主題就是變數部分剩下的內容,因為前幾天介紹的部分的確是介紹的七七八八的了,但是還是有一小部分是沒有介紹到的。像是等等的變數的有效範圍,變數的鍵盤讀取、陣列與宣告這幾個部分。
那我們先從變數的有效範圍先開始好了,變數在使用上是有有效範圍的,還記得前幾天提及的副程序跟子程序的觀念嗎?再不同的程序關係中,變數能不能被引用是跟export這隻指令有關,被export之後的變數就被視為環境變數,環境變數可以被子程序引用,但是自訂變數則不行。那為什麼環境變數可以被子程序所引用呢?這就跟記憶體配置有關,理論上是這樣解釋的。
(1)當啟動一個shell,作業系統會分配一個記憶區塊給shell使用,這個記憶體內部的變數可以讓子程序使用
(2)父程序利用export功能,可以讓自訂變數的內容寫到上述的記憶區塊之中
(3)載入另外一個shell的時候(就是離開父程序進入子程序的時候),子shell可以將父shell的環境變數所在的記憶區塊導入自己的環境變數區塊當中
因為上述關聯,可以讓某些變數在相關的程序之間存在,可以幫助使用者更方便的操作環境。
有個地方要稍微注意一下,這個環境變數跟bash的操作環境意思不太一樣
那接下來要來介紹變數的鍵盤讀取、陣列與宣告,在使用部分程式的時候,會出現一個對話提示的互動式介面,等待使用者輸入資訊,這個部分在bash中也有相關的功能,那跟這個功能相關的指令就是read這隻指令
read
(1)讀取來自鍵盤中的變數
(2)常用於shell script的撰寫當中
指令格式
read (-pt) 變數名稱
相關參數以及選項
-p:後面可以接提示字元
-t:後面可以接等待秒數
declare/typeset(主要介紹declare,typeset本人其實不太會用)
(1)兩隻指令其實是一樣的功能
(2)用在宣告變數的類型
(3)在預設的情況下,bash對於變數有幾個基本定義
-變數類型預設為字串,在不只定變數類型的情況下,會將數學的計算式視為字串
-bash環境中的數值運算,預設最多只能到達整數形式
(4)如果不小心將變數設定為唯讀,通常要登出再登入才能復原該變數類型
指令格式
declare (-aixr) 變數名稱
相關參數以及選項
-a:將變數定義為陣列
-i:將變數定義為整數
-x:用法跟export相同,是將後面接上的變數更改為環境變數
-r:將變數設定為randonly類型,該變數不可被更改內容,也不能unset
以上就是本人介紹變數的部分,如果有缺漏的部分,也麻煩大家多指教