1. 程式人生 > >shell程式設計——變數和引用

shell程式設計——變數和引用

1    在shell中,通常情況下使用者可以直接使用變數,無需先進行定義,當用戶第一次    使用某個變數時,實際上就同時定義了這個變數,在變數的作用域內,使用者都可以使用該變數。

在shell語言中,如果變數的值包含空格,則一定要使用引號引用起來。

為了更好地控制變數的相關屬性,bash提供了一種名稱為declare的命令來宣告:

declare attribute variable

attribute:

-i    將變數定義為整數,如果求值失敗或者不是整數,就設定為0

-r    將變數設定為只讀變數,只讀變數不允許修改,也不允許刪除。

-x    將變數設定成環境變數,這樣在隨後的指令碼和程式中可以使用。

2    變數和引號

單引號 雙引號 反引號:

其中單引號括起來的字元都作為普通字元出現,

雙引號括起來的字元,除“$” "\" “'” “`” 這幾個字元仍是特殊字元並保留其特殊功能外,其餘字元仍作為普通字元對待

由反引號括起來的字元被shell解釋為命令,在執行時,shell首先執行該命令,並以它的標準輸出結果取代整個反引號(包括兩個反引號)部分。

命令替換:`shell_command`等價於$(shell_command)

3    全域性變數、區域性變數、系統變數

全域性變數:在指令碼中定義的變數都是全域性變數,不僅可以在指令碼中直接使用,而且還可以在函式內部直接使用。其作用域為從被定義的地方開始,一直到shell指令碼結束或者被顯式地刪除。

預設情況下,函式內部定義的變數也屬於全域性變數。

區域性變數:通過local關鍵字定義區域性變數,另外,函式的引數也是區域性變數。函式內部的區域性變數會遮蔽函式外部的全域性變數,即:在出現同名的情況下,函式內部的區域性變數會優先被使用。 

系統變數:

$n    第n個引數

$#    命令列引數的個數

$0    當前shell指令碼的名稱

$?    前一個命令或者函式的返回狀態碼

$*   [email protected]    將所有的引數通過特定形式返回

4    變數賦值 

variable_name=value

如果value中包含空格、製表符和換行符,則必須要用單引號或者雙引號將其引起來。雙引號內允許變數替換,而單引號則不可以。

中間的“=”稱為賦值符號,賦值符號的左右兩邊不能直接跟空格,否則shell會將其視為命令。

5    清除變數

使用unset語句

unset variable_name

清楚掉以後輸出空值

6    引用和替換

轉義:轉義使用反斜線表示,當反斜線後面的一個字元具有特殊的意義時,反斜線將遮蔽該字元的特殊意義。

相關推薦

shell程式設計——變數引用

1    在shell中,通常情況下使用者可以直接使用變數,無需先進行定義,當用戶第一次    使用某個變數時,實際上就同時定義了這個變數,在變數的作用域內,使用者都可以使用該變數。在shell語言中,如果變數的值包含空格,則一定要使用引號引用起來。 為了更好地控制變數的相關

shell程式設計變數變數賦值

1、檢視所有的shell變數 set 2、檢視所有的只讀shell變數 readonly 3、變數設定值 格式:var_name=var_value 注意:=連線變數名和變數值,=兩側不能有空格;當值var_value含空格時,需要雙引號把var_value

shell變數引用

shell中,變數的命名:可以有字母、數字和下劃線組成,並且只能以字母和下劃線開頭。 shell語言的系統變數主要在對引數判斷和命令返回值判斷是使用。其中,包括指令碼和函式的引數、指令碼和函式的返回值

Shell程式設計---source ./ sh 執行指令碼的區別 & 更新環境變數

執行shell指令碼一般有三種方式:sh,./ 和 source。 sh 和 ./ 功能差不多,./不能執行沒有執行許可權的指令碼,而sh可以;兩者都是繼承父shell在子shell環境中執行指令碼,執行完畢後不帶回父shell環境中。 source 或者

shell淺談之一變數引用

一、簡介        變數是指令碼語言的核心,shell指令碼又是無型別的。變數本質上儲存資料的一個或多個計算機記憶體地址,分為本地變數(使用者當前shell生命期使用,隨shell程序的消亡而無效,類似區域性變數)、環境變數(適用於所有由登入程序所產生的子程序)和位置

python 深入變數引用物件

變數和物件 在《learning python》中的一個觀點:變數無型別,物件有型別 在python中,如果要使用一個變數,不需要提前宣告,只需要在用的時候,給這個變數賦值即可。這裡特別強調,只要用一個變數,就要給這個變數賦值。 所以,像這樣是不行的。 >>&

【Ansible】 Playbook 中的變數引用

Playbook 中的變數和引用1.1 通過Inventory來定義host和group變數說明:1. host 變數只對當前host起作用2. group 變數對組內的所有host起作用示例Inventory定義 [test]ansible1ansible2ansible3[test:vars]inv

Linux程式設計 22 shell程式設計(輸出輸入重定向,管道,數學運算命令,退出指令碼狀態碼)

1. 輸出重定向 最基本的重定向是將命令的輸出傳送到一個檔案中。在bash shell中用大於號(>) ,格式如下:command > inputfile。例如:將date命令的輸出內容,儲存到指定的輸出檔案中。      如果檔案已存在,重定向操作符會用新的檔案資料覆蓋已有檔案。這種情況下可以用

值型別變數引用型別變數的區別

主要區別在於 系統在記憶體空間中為兩者分配儲存空間的方式不同。 1、記憶體空間 記憶體空間分為棧空間和堆空間。值型別資料的儲存空間在棧空間中分配,引用型別資料則在堆空間分配。 由系統管理棧空間的所有操作,包括進棧和出棧。當一個數據出棧後,其所分配到的儲存空間由系統自動回收。

Java基礎-基本型別變數引用型別變數

前言 每個變數佔據了一定的記憶體位置,宣告一個變數時,就是在告知編譯器這個變數可以存放什麼型別(佔據多少個位元組的記憶體)。 什麼是基本型別變數 一、定義 JAVA語言本身定義的整型、字元型、浮點型和布林型別是基本型別變數,通俗來說可利用關鍵字宣告的變數

python程式設計變數簡單資料型別

用引號括起來的都是字串,這裡與c不同,c中單引號括起來的是字元,雙引號括起來的是字串。 修改字串的大小寫 1.title()以首字母大寫的方式顯示字串 1 name=“ada lovelace” 2 print(name.title()) 3 輸出為: 4 Ada Lovelac

shell程式設計技術例項--《linux0.01核心分析與作業系統設計》

雖然不知道盧軍到底是何許人也,但是他的這本書確實寫得淺顯易懂,頗具培訓教材的意味。 linux的shell程式設計從unix起步,早期作為一種人機互動工具而呈現,經過多年的成長進步和發展。先後出現了

shell指令碼之shell內部變數環境變數

這篇部落格介紹:1、部分常用的內部變數2、環境變數變數的分類可以參考:點選開啟連結1、部分常用的內部變數:    ⑴ #         說明:$#變數是命令列引數或位置引數的數量    ⑵ -         說明:$-變數是傳遞給shell指令碼的執行標誌    ⑶ ?

條款5:類拷貝賦值操作符不能作用於-》常量成員變數引用成員變數

1.知識點: 什麼時候一個空類,不再是空類了呢?當c++編譯器處理之後。 如果沒有定義,編譯器會為你產生四個函式: 1)  預設建構函式 2)  Copy建構函式 3)  賦值建構函式 4)  解構函

基本型別變數引用型別變數的實參形參

傳參即是實參的值賦給形參。對於基本型別的形參,在方法內部對形參的修改只會侷限在方法內部,不會影響實參。 比如,給Calculator增加一個increase(int)方法: class Calculator { public int add(int a,

基本型別變數引用型型別變數

1、所有區域性變數都放在棧記憶體中儲存,不管其是基本型別的變數還是引用型別的變數,都儲存在各自的方法棧區中;但引用型別變數所引用的物件(陣列物件、普通java物件)則總是儲存在堆記憶體中。 2、全域性變數作為物件 的一部分,初始化物件時,會儲存在堆中。 3、引用變數何時只是棧(stack)記憶體中的變數本

C++基礎(3)區域性變數引用

1.區域性變數         在C++語言中,允許在程式碼塊的任何地方定義區域性變數;而在C語言程式中,區域性變數必須集中定義在可執行語句的前面。 一般來說,在較短的函式程式碼中,將區域性變數在函式開始位置集中定義比較好,這樣在程式碼維護時能夠迅速確定變數的定義位置;而在

Shell程式設計-03-Shell中的特殊變數擴充套件變數

特殊變數     在Shell中的特殊變數主要分別兩種位置引數變數、狀態變數兩種。 位置引數變數     Shell中的位置引數變數主要是指$0、$1、$#等,主要用於從命令列、函式或指令碼執行等地方傳遞引數。詳細說明如下所示: $0:獲取當前執行的Shell指令碼的檔名,如指令碼中包含路徑,則

Shell程式設計中的“區域性變數“匯出變數

http://roclinux.cn/?p=1277  為了防止某些網站的惡性轉載,特在每篇文章前加入此資訊,還望讀者體諒。 === [正文開始] 如果你對子Shell的概念不甚瞭解,如果你對export的用法還沒吃透,如果你不知道Shell如何管理你的變數,請

shell程式設計變數以及awk命令rename命令

常用的環境變數可以用env和set檢視,但是最全面的還是man bash來檢視。 在這裡舉例一些常用的環境變數echo $HOSTNAME                  檢視主機名 echo $HOSTTYPE                 檢視主機系統型別 echo