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

shell變數和引用

shell中,變數的命名:可以有字母、數字和下劃線組成,並且只能以字母和下劃線開頭。

shell語言的系統變數主要在對引數判斷和命令返回值判斷是使用。其中,包括指令碼和函式的引數、指令碼和函式的返回值。

變數 說明
$n 指令碼或函式的第n個引數
$0 當前shell的指令碼名稱
$# 命令列引數的個數
$? 前一個命令或函式的返回狀態碼
$$ 返回本程式的程序ID(PID)
$* 以空格分割,返回所有引數。返回的形式為一個字串:”引數1 引數2 引數3 。。。“
[email protected] 以空格分割,返回所有引數。返回的形式為多個字串:"引數1" "引數2" "引數3" 。。。

shell中的引號:雙引號(" "),單引號(' '),反引號(` `)  

         引用:shell中,字串用引用符號將字串包括起來,以防止其中的特殊字串被shell解釋為其他含義。

引用符號 說明
單引號 所有的字元都將保留字面意義   輸出變數的內容時但因號是什麼就輸出什麼。  (強引用)
雙引號 除了美元字元($),單引號('),反引號(`),反斜槓(\)  之外,
其他所有的字元都將保留字面意義 ;(弱引用)
反引號 反引號中的字串經被解析為shell的命令
反斜槓 轉義字元,遮蔽後面字元的特殊意義

$變數名錶示輸出變數,可以用$C 和 ${C} 兩種用法;

用單引號括起來(' ')  用雙引號括起來(" ")

示例(1):  

[[email protected] shell]# a=123
[[email protected] shell]# b='456'
[[email protected] shell]# c="789"
[[email protected] shell]# echo "$b"
456
[[email protected] shell]# echo "${c}"
789
[[email protected] shell]# echo "$a"
123

示例(2): 

[[email protected] shell]# a=allen--$a    
[

[email protected] shell]# b='allen--$a'
[[email protected] shell]# c="allen--$a"
[[email protected] shell]# echo "a=$a"     //直接定義變數的內容
a=allen--123        
[[email protected] shell]# echo "b=$b"     //輸出變數的內容時但因號是什麼就輸出什麼。
b=allen--$a
[[email protected] shell]# echo "c=${c}"   //括號的變數即命令會經過解析後在輸出內容
c=allen--allen--123

示例(3):  awk 在shell的特殊用法:

[[email protected] shell]# ETF=123455       注意:沒有新增引號
[[email protected] shell]# echo "$ETF"
123455

[[email protected] shell]# awk 'BEGIN {print "$ETF"} '  
$ETF

[[email protected] shell]# awk 'BEGIN {print  $ETF} '    輸出為空 

[[email protected] shell]# awk 'BEGIN {print  '$ETF'} '   使用但引號
123455
[[email protected] shell]# awk 'BEGIN {print  "'$ETF'"}  '  使用但引號和雙引號
123455

[[email protected] shell]# ETT='old_allen'              //新增單因號
[[email protected] shell]# awk 'BEGIN {print "ETT"}'
ETT
[[email protected] shell]# awk 'BEGIN {print "$ETT"}'
$ETT
[[email protected] shell]# awk 'BEGIN {print $ETT}'

[[email protected] shell]# awk 'BEGIN {print '$ETT'}'

[[email protected] shell]# awk 'BEGIN {print "'$ETT'"}'
old_allen

 
[[email protected] shell]# ETT="new_allen"   //新增雙因號
[[email protected] shell]# awk 'BEGIN {print "$ETT"}'
$ETT
[[email protected] shell]# awk 'BEGIN {print $ETT}'

[[email protected] shell]# awk 'BEGIN {print '$ETT'}'

[[email protected] shell]# awk 'BEGIN {print "'$ETT'"}'
new_allen

[[email protected] shell]# ETT=`pwd`   //反引號
[[email protected] shell]# echo $ETT
/home/allen/test/shell
[[email protected] shell]# awk 'BEGIN {print "$ETT"  }'
$ETT
[[email protected] shell]# awk 'BEGIN {print $ETT }'

[[email protected] shell]# awk 'BEGIN {print '$ETT' }'   //錯誤提示
awk: cmd. line:1: fatal: division by zero attempted
[[email protected] shell]# awk 'BEGIN {print "'$ETT'" }'
/home/allen/test/shell

[[email protected] shell]# ETT="new_allen"   //新增雙因號

[[email protected] shell]# echo "$ETT" |awk '{print $0}'
new_allen
[[email protected] shell]#
[[email protected] shell]# echo '$ETT' |awk '{print $0}'
$ETT
[[email protected] shell]# echo $ETT |awk '{print $0}'
new_allen
[[email protected] shell]# echo "'$ETT'" |awk '{print $0}'
'new_allen'

[[email protected] shell]# ETT=`pwd`   //反引號
[[email protected] shell]# echo $ETT
[[email protected] shell]# echo "$ETT" | awk '{print $0}'
/home/allen/test/shell
[[email protected] shell]# echo $ETT | awk '{print $0}'
/home/allen/test/shell
[[email protected] shell]# echo '$ETT' | awk '{print $0}'
$ETT


用反引號括起來(` `)

命令替換,還有另外一種方式:$()的形式。

例如:

1、`pwd`

2、$(pwd)t

其中,1和2是完全等價的。

touch $(date +%F).txt      touch `date +%F`.c

  2017-09-20.c  2017-09-20.txt 

mkdir Y_$(date +%F)_date    mkdir Y_`date +%F`_date2pe



反斜槓(\)

declare attribute variable

attribute的可選值:

-p:顯示所有的變數

-i:宣告變數為整型

-r:宣告變數為只讀。只讀變數不可以:修改和刪除。

-a:宣告變數為陣列

-f:顯示所有自定義函式

-x:將變數設定為環境變數

相關推薦

shell變數引用

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

shell程式設計——變數引用

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

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

Part2 Linux Bash Shell變數重定向

直譯器 理解其他命令,並且命令執行起來 理解語句,並且根據流程控制機制讓語句按需執行: 編譯器 理解源程式,並且能夠將源程式轉換為二進位制格式,而後讓其夠執行 程式檔案:原始碼 直譯器: 由直譯器負責讀取一句執行一句 編譯器: 事先,將整個程式轉換成二進位制格式,而後執

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

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

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

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

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

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

【6-14】Shell變數引用

引用時將字串用引號,以防特殊字元被Shell指令碼重解釋為其他意義。 引用時遮蔽特殊字元的特殊意義,而將其解釋為字面意義。(這與其他語言的引用完全不是一個概念) "" 引用除$,反引號(`)和反

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

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

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

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

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

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

02 . Shell變數邏輯判斷及迴圈使用

#### Shell變數 ##### 系統變數 > 在命令列提示符直接執行 env、set 檢視系統或環境變數。env 顯示使用者環境變數,set 顯示 Shell預先定義好的變數以及使用者變數。可以通過 export 匯出成使用者變數。 `一些寫Shell指令碼時常用的系統變數` ```python

01: Shell概述 編寫及執行指令碼 、 Shell變數 總結答疑

Top NSD SHELL DAY01 案例1:Shell基礎應用 案例2:簡單Shell指令碼的設計 案例3:使用Shell變數 案例4:變數的擴充套件應用 1 案例1:Shell基礎應用 1.1 問題 本案例要求熟悉Linux Shell環境

PHP變數的值型別引用型別

PHP 變數在記憶體中儲存的並不直接是值的內容而是值的地址。比如: $a = 1; 從表面上看起來似乎是 $a 直接儲存了 1 這個值。但是實際情況是,PHP 直譯器建立了變數 $a , 將值 1 存入記憶體中的某個地方,再將值的地址存到變數中。 需要取值時,先找到變數中 $a 的地址,再根

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

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

對於類裡面例項變數函式的引用

class Car(): def __init__(self,make,model,year): self.make=make self.model=model self.year=year def get_name(self):

關於引用變數進行引用傳遞時傳遞變數為空不為空的區別

/** * */ /** * @author jueying: * @version 建立時間:2018-10-27 下午02:02:27 * 類說明 */ /** * @author jueying * */ class A { public

Liunx----Shell指令碼簡單介紹 Shell執行環境Shell變數

Shell 指令碼(shell script),是一種為 shell 編寫的指令碼程式。 Shell 程式設計跟 java、php 程式設計一樣,只要有一個能編寫程式碼的文字編輯器和一個能解釋執行的指令碼直譯器就可以了。 Linux 的 Shell 種類眾多,常見的有: Bourne Shell(