03變數和引用

2022-09-06 16:24:11 字數 2654 閱讀 5236

shell程式設計

例項:

#! /bin/bash

x=123

let"x += 1"

echo

"x = $x"

echo

# 輸出空行

y=$echo

"y = $y"

declare -i y 

echo

"y = $y"

let"y += 1"

# 遇到含有非數值的字串,字串轉換為整數0

echo

"y = $y"

echo

z=abc22 

echo

"z = $z"

m=$echo

"m = $m"

let"m += 1"

echo

"m = $m"

echo

# 空變數或者空串轉換為整數都為0

n=""

echo

"n = $n"

let"n += 1"

echo

"n = $n"

echo

echo

"p = $p"

let"p += 1"

echo

"p = $p"

可以直接使用變數來定義變數,例如:

#! /bin/bash

a=1b="hello world"

使用declare來宣告變數,基本語法:

declare attribute variable 

常用的屬性:

-p:-i:

-r:唯讀變數

-a:陣列

-f:函式

-x:將變數設定為環境變數,這樣隨後的指令碼和程式都可以使用

例項:

#! /bin/bash

x=6/3

echo

"x = $x"

declare -i x 

echo

"x = $x"

x=6/3

echo

"x = $x"

x=hello 

echo

"x = $x"

# bash並不內建對浮點數的支援

x=3.14

echo

"x = $x"

declare +i x 

x=6/3

echo

"x = $x"

x=$[6/3] 

echo

"x = $x"

x=$((6/3)) 

echo

"x = $x"

declare -r x 

echo

"x = $x"

x=5echo

"x = $x"

執行結果:

delphi@delphi-vm:~/shell/chapter03$ ./test.sh  

6/3 

x = 6/3 

x = 2 

x = 0 

./test.sh: 行 13: 3.14: 語法錯誤: 無效的算術運算子 (錯誤符號是 ".14") 

x = 0 

x = 6/3 

x = 2 

x = 2 

./test.sh: 行 24: x: 唯讀變數 

x = 2 

例如:

#! /bin/bash

echo

"the current directory is `pwd`"

#! /bin/bash

func

()  

v1=100

func 

echo

"$v1"

執行結果:

100200

注意:函式內部定義的變數也是全域性變數

全域性變數和區域性變數的區別:

#! /bin/bash

func

()  

v1=100

func 

echo

"$v1"

執行結果:

100200

100賦值號左右不能夠接空格,否則shell會將其視為命令。

建議使用大括號將變數名進行明確界定,不用簡寫。

例如:echo "$abc"

unset 變數 語句

單引號為全引用,如:

#! /bin/bash

v1="hello"

echo

'world,$v1'

輸出:world,$v1

有兩種語法:

例如:

#! /bin/bash

v1='pwd'

echo

'the current directory is $v1'

#! /bin/bash

v1=$(pwd) 

echo

'the current directory is $v1'

如:echo \$shell

結果:$shell

和equals基本變數和引用變數

對於 如果作用於基本資料型別的變數,則直接比較其儲存的 值 是否相等 如果作用於引用型別的變數,則比較的是所指向的物件的位址 對於equals方法,注意 equals方法不能作用於基本資料型別的變數,因為基本資料型別是特殊的,沒有整合equals方法 如果沒有對equals方法進行重寫,則比較的是引...

c 返回變數和返回變數引用

int at int at 上面兩個函式,第乙個返回值是int的引用int 第二個返回值是int,二者的區別是什麼呢?我們先用乙個語句 const int a mymay.at 來分別呼叫一次上面兩個函式,然後看組合語言的結果。反彙編結果 1 int at 2 5600bb6830 push ebp...

shell變數賦值和引用

變數賦值 變數名 值 注意 給變數賦值的時候,不能在 兩邊留空格 變數引用 只需在變數名前面加乙個 有時候變數名可能會和其它文字混淆,需要在變數名之間加上花括號 num 2 echo this is the nd 需要注意shell的預設賦值是字串賦值,例如 var 1 var var 1 echo...