陣列變數與算術運算

2021-06-28 00:11:56 字數 3639 閱讀 7565

陣列變數

1.陣列的定義

宣告乙個陣列並為其賦值

student=(element1 element2...)

顯示索引2的陣列元素值

echo $  #中間有空格就會報錯,{}確保在解析時,將student[2]視為乙個變數名。

程式通過for迴圈,顯示學生成績列表

chen@chen-ideapad-y430:~/test$ cat scorevaluate 

#!/bin/bash

#filename:scorevaluate

student=("張三" "李四" "王小二" "李小明" "張四寶")

score=( 66 55 68 98 84 )

for i in 0 1 2 3 4

doecho "$的考試成績為:$ "

done

執行示例

chen@chen-ideapad-y430:~/test$ ./scorevaluate 

$ 的考試成績為:66 

$ 的考試成績為:55 

$ 的考試成績為:68 

$ 的考試成績為:98 

$ 的考試成績為:84 

程式通過while迴圈展示名單

chen@chen-ideapad-y430:~/test$ cat numarray 

#!/bin/bash

#filename:sumarray

student[0]="張明"

student[1]="李四"

student[2]="王小五"

student[3]="趙勤"

student[4]="李小平"

echo "----人員名單----"

i=0while [ $i -lt 5 ]  #i小於5繼續執行

doecho $

i=$(($i+1))  #變數i自加1

done

執行示例

chen@chen-ideapad-y430:~/test$ ./numarray 

----人員名單----

張明李四

王小五趙勤

李小平

2.陣列的複製

陣列有兩個特殊的索引*和@,其作用是提取整個陣列元素。符號@的含義是把原陣列內容複製到乙個新陣列,生成的內容和原來的是一樣的。符號*把原陣列的所有元素當成乙個元素複製到新陣列中。

chen@chen-ideapad-y430:~/test$ declare -a  //顯示當前所有陣列

.......

declare -a student='([0]="張三" [1]="李四" [2]="王小二" [3]="李小明" [4]="張四寶")'

chen@chen-ideapad-y430:~/test$ all=("$")

chen@chen-ideapad-y430:~/test$ list=("$")

chen@chen-ideapad-y430:~/test$ declare -a

......

declare -a all='([0]="張三 李四 王小二 李小明 張四寶")'

declare -a list='([0]="張三" [1]="李四" [2]="王小二" [3]="李小明" [4]="張四寶")'

declare -a student='([0]="張三" [1]="李四" [2]="王小二" [3]="李小明" [4]="張四寶")'

3.陣列的個數

$ 返回陣列的個數

chen@chen-ideapad-y430:~/test$ echo $5

4.陣列的長度

$返回陣列的長度,其中num是陣列元素的下標

chen@chen-ideapad-y430:~/test$ echo $3

檢視陣列student中的每個元素的字元長度

chen@chen-ideapad-y430:~/test$ cat arrayelem 

#!/bin/bash

#filename:arrayelem

student=(zhangsan lisi wangsiaoer liliangjie zhourunfa )

n=$echo "---陣列元素的長度統計---"

i=0while [ $i -lt $n ]

doecho "第$i個元素的長度為:$"

i=$(($i+1))

done

執行示例

chen@chen-ideapad-y430:~/test$ ./arrayelem 

---陣列元素的長度統計---

第0個元素的長度為:8

第1個元素的長度為:4

第2個元素的長度為:10

第3個元素的長度為:10

第4個元素的長度為:9

算術運算

shell沒有內建的算術運算。使用expr命令或let命令完成簡單的整數算數運算。使用awk或bc命令完成浮點算術運算。

1.expr命令

有5種算術運算子可以使用:+、-、\*、/、%

chen@chen-ideapad-y430:~/test$ a=5;b=15

chen@chen-ideapad-y430:~/test$ x=`expr $b / $a `

chen@chen-ideapad-y430:~/test$ y=`expr $b % $a `

chen@chen-ideapad-y430:~/test$ echo x=$x y=$y

x=3 y=0

chen@chen-ideapad-y430:~/test$ a=`expr $a + 2 `

chen@chen-ideapad-y430:~/test$ echo $a

72.let命令

let可以和expr互換使用。不需要在變數前加$符號,要將單個或帶有空格的表示式用雙引號引起來。

chen@chen-ideapad-y430:~/test$ x=200

chen@chen-ideapad-y430:~/test$ let x=x+5

chen@chen-ideapad-y430:~/test$ echo $x

205chen@chen-ideapad-y430:~/test$ let y=x-5

chen@chen-ideapad-y430:~/test$ echo $y

200

3.浮點算術運算

整行命令放在反引號裡表示返回該行命令的執行結果,且儲存到變數n中。使用echo將需要計算的資料及引數從管道|輸出給bc命令,scale=2表示保留2位小數。

chen@chen-ideapad-y430:~/test$ n=`echo " scale=2;172/2 "|bc `

chen@chen-ideapad-y430:~/test$ echo $n

86.00

chen@chen-ideapad-y430:~/test$ p=` awk 'begin '`

chen@chen-ideapad-y430:~/test$ echo $p

21.20 1.325

變數和算術運算之算術運算(二)

主要內容 1.算術運算的優先順序 2.算術宣告的缺陷 3.在算術表示式中混合整數和實數 4.型別強制轉換 5.邊緣效應 include using namespace std intmain 賦值語句中使用前增量和後增量運算子 k i 等價於k i,i h i等價於j j h j 再例如 i 2,j...

Python中的變數與算術運算

python中可以通過如下形式定義乙個變數並賦值 變數名 表示式比如,我可以定義乙個名為 a 的變數並將其賦值為 3 對應的 如下 a 3使用算術運算子可以進行一些常用的算術運算,算術運算子有 他們分別表示 加 減 乘 除 整除 取餘 其中,是針對整數運算的,a b表示 a div b 的商,而a ...

算術運算和陣列

因為短是2個位元組,每個位址不同於2。很難得看到 和 用這樣的方式與指標運算子。然而,更常見的是看到 或 運算元被用來增加或減少乙個指標指向陣列中的下乙個或前乙個元素。指標的算術運算和陣列 如果是乙個指標,指向陣列的第乙個元素 元素0 的陣列,並新增1到指標已經返回下乙個物件,然後排列 1點必須到二...