1 2 shell的變數功能

2021-09-28 11:15:22 字數 4517 閱讀 8286

首先給出變數的定義:

變數是指沒有固定的值,可以改變的數。變數以非數字的符號來表達,一般用拉丁字母。

變數的設定需要使用「=」,等號左邊為變數名稱,右邊為變數內容,變數的定義遵循以下規則:

等號兩邊不能直接使用空格,如下所示為錯誤:

[haoqiqi@localhost ~]$ myname = haoqiqi

bash: myname: 未找到命令...

[haoqiqi@localhost ~]$ myname=hao qiqi

bash: myname: 未找到命令...

變數名稱不能只能是英文本母與數字,且開頭不能是數字

若變數內容中含有空格,則需要將整個變數內容用雙引號「或單引號『引起來。

可使用跳脫字元」\「將特殊符號(如enter、$、\,空格等)變成一般字元

[haoqiqi@localhost ~]$ myname=hao\ qiqi

若變數為擴增變數內容時,需要使用」$變數內容「或"$」累加內容,如下所示:

[haoqiqi@localhost ~]$ path="$path":/home/bin

[haoqiqi@localhost ~]$ path="$:/home/bin"

使用export宣告環境變數。

linux系統預設的變數通常為大寫

ps.自己命名的變數可以使用小寫加以區分。

取消變數使用unset,例如:

[haoqiqi@localhost ~]$ unset myname

要輸出變數時,需要用到echo,使用形式如下:

echo $
[haoqiqi@localhost ~]$ myname=hao\ qiqi

[haoqiqi@localhost ~]$ echo $

hao qiqi

全域性變數是指在整個環境即所有檔案下都管用的變數,能夠被子程式所引用。子程式只能繼承父程式的全域性變數,不能繼承父程式的區域性(自定義)變數。

在shell環境中,可以利用env、set、export檢視全域性變數。

[haoqiqi@localhost ~]$ export 變數名稱
1.2.3.1 read:讀取鍵盤

讀取來自鍵盤的變數,c++中使用cin,matlab、shell中使用read,但是用法不同。

[haoqiqi@localhost ~]$ read [-pt]variable

read 讀取指令

-p:後面可以接提示字元!

-t:後面可以接等待時間,單位為秒。

例示:

[haoqiqi@localhost ~]$ read myname

haoqiqi

[haoqiqi@localhost ~]$ echo $

haoqiqi

1.2.3.2 陣列變數

陣列的定義方式如下:

var[index]=content

var表示陣列名

index表示變數位置

content表示內容

注意:等號兩側不能加空格

舉例如下:

[haoqiqi@localhost ~]$ var[1]="first"

[haoqiqi@localhost ~]$ var[2]="secend"

[haoqiqi@localhost ~]$ var[3]="third"

[haoqiqi@localhost ~]$ echo "$,$,$"

first,secend,third

1.2.3.3 declare/typeset:宣告變數的型別

若declare後面沒有加引數,則會輸出所有的變數名稱與內容,與set類似。

declare後加引數:

[haoqiqi@localhost ~]$ declare [-aixr]variable

選項與引數:

-a:將後面名為variable的變數定義為陣列(array)型別

-i:將後面名為variable的變數定義為整數數字(integer)型別

-x:用法與export一樣,宣告全域性變數

-r:將變數設定為唯讀(readonly)型

舉例:

[haoqiqi@localhost ~]$ sum=100+200+300

[haoqiqi@localhost ~]$ echo $

100+200+300

[haoqiqi@localhost ~]$ declare -i sum1=100+200+300

[haoqiqi@localhost ~]$ echo $

600

1.2.3.4 變數內容的刪除、取代(optional)

變數的設定方式說明$

若變數內容包含」舊字串「,則將第乙個舊字串取代為新字串

$若變數內容包含」舊字串「,則將所有的舊字串取代為新字串

舉例如下:

[haoqiqi@localhost ~]$ path=$

[haoqiqi@localhost ~]$ echo $

/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/haoqiqi/.local/bin:/home/haoqiqi/bin

[haoqiqi@localhost ~]$ echo $

/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/haoqiqi/.local/bin:/home/haoqiqi/bin

對$的解釋:

#表示從前向後刪除

/*local/bin: 表示需要被刪除的部分,由/開始,*取代0到無窮多任意字元

刪除部分如下:

/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/haoqiqi/.local/bin:/home/haoqiqi/bin

[haoqiqi@localhost ~]$ path=$

[haoqiqi@localhost ~]$ echo $

/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/haoqiqi/.local/bin:/home/haoqiqi/bin

[haoqiqi@localhost ~]$ echo $

/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/haoqiqi/.local/bin:/home/haoqiqi/bin

1.2.3.5 變數的測試與內容替換

測試方法:

[haoqiqi@localhost ~]$ new_var=$

其關鍵符號為減號」-「,若old_var存在,則new_var等於old_var,否則等於content

舉例如下:

[haoqiqi@localhost ~]$ echo $

注意這裡是返回值為空,不是我故意留的空行

[haoqiqi@localhost ~]$ username=$

[haoqiqi@localhost ~]$ echo $

yourname

[haoqiqi@localhost ~]$ myname="haoqiqi"

[haoqiqi@localhost ~]$ username=$

[haoqiqi@localhost ~]$ echo $

haoqiqi

其它測試與替換操作:

var與str為變數,針對str是否設定決定var的值。

變數設定方式

str沒有設定

str為空字串

str為非空字串

var=$

var=expr

var=

var=$str

var=$

var=expr

var=expr

var=$str

var=$

var=

var=expr

var=expr

var=$

var=

var=

var=expr

var=$

str=expr

var=expr

str 不變

var=

str 不變

var=$str

Linux筆記12 Shell基礎

histroy 歷史命令一般存放在 bash histroy檔案中,根據執行這個命令使用不同的引數,對此檔案的內容可以寫入或是清空。歷史命令缺省會儲存1000條,這個配置可以在環境變數 etc profile配置檔案中進行修改。tab鍵 按tab鍵進行命令或檔名補全。別名 alias,可以給乙個命令...

12 shell 字串處理

tips 在上面替換結構中string不一定是常值的,可用另外乙個變數的值或是一種命令的輸出。是去掉左邊 在鍵盤上 在 之左邊 是去掉右邊 在鍵盤上 在 之右邊 和 中的單一符號是最小匹配,兩個相同符號是最大匹配。tips 這四種模式中都不會改變 variable 的值,其中,只有在pattern中...

Linux基礎 12 shell裡所有的計算器

expr bc bc l 浮點運算 yum install bc y root miwifi r3 srv echo scale 2 1 3 bc l 33測試檔案狀態 d 目錄 s 檔案長度 0 非空 f 正規檔案 w 可寫 r 可讀 x 可執行 l 符號連線 u 檔案有 suid 位設定字串測試...