shell 賦值 運算


一、read 接收鍵盤輸入

read [選項] [變量名]

選項:

-p 提示信息 point

-t 秒數time

-n 字符數number

-s隱藏輸入的數據secret

例子:使用read 提示輸入參數值

 

結果:

 

 

 

 與位置參數變化相比,更友好

二、declare 聲明變量類型

+   取消變量的類型屬性

- 給變量設置類型屬性

-a 設置變量類型為數組array

-i  將變量類型聲明為整數型int

-x 將變量聲明為環境變量

-p 顯示變量的被聲明類型

例如1:a 沒有定義類型,默認為字符串,當定義a為整型(-i),在將字符串賦值給a時,此時當然會失敗,輸出為0.查看a的屬性(-p),為整形


gjl@gjl-virtual-machine:~/shellTest$ declare -p a declare -- a="1" gjl@gjl-virtual-machine:~/shellTest$ declare -i a gjl@gjl-virtual-machine:~/shellTest$ a='we' gjl@gjl-virtual-machine:~/shellTest$ echo $a 0 gjl@gjl-virtual-machine:~/shellTest$ a=12 gjl@gjl-virtual-machine:~/shellTest$ echo $a 12 gjl@gjl-virtual-machine:~/shellTest$ declare -p a declare -i a="12"

例如2:聲明b為數組,並顯示數組

gjl@gjl-virtual-machine:~/shellTest$ declare -a c='([0]=1 [2]='11' [3]='aa')'
gjl@gjl-virtual-machine:~/shellTest$ echo ${c[2]}
11

數組賦值

1、按需添加

gjl@gjl-virtual-machine:~/shellTest$ b[0]=1
gjl@gjl-virtual-machine:~/shellTest$ b[1]=2
gjl@gjl-virtual-machine:~/shellTest$ echo ${b[*]}
1 2
gjl@gjl-virtual-machine:~/shellTest$ echo ${b[@]}
1 2

2、一次性添加多個元素 

gjl@gjl-virtual-machine:~/shellTest$ declare -a c
gjl@gjl-virtual-machine:~/shellTest$ c=(1 2 3)
gjl@gjl-virtual-machine:~/shellTest$ echo ${c[*]}
1 2 3

3、按稀疏格式添加

gjl@gjl-virtual-machine:~/shellTest$ declare -a c='([0]=1 [2]='11' [3]='aa')'
gjl@gjl-virtual-machine:~/shellTest$ echo ${c[2]}
11

數組不是按照0123這樣的順序來的  

4、通過read -a 方式添加

#!/bin/bash
read  -p "please input shuzu:" -a   e
echo ${e[*]}
echo ${e[2]}



gjl@gjl-virtual-machine:~/shellTest$ test07.sh
please input shuzu:3 4 34
3 4 34
34

注意事項:引用變量的時候,花括號不能少,用括號來表示數組,數組元素用"空格"符號分割開

 

 

 

刪除數組中的某個值/刪除數組

gjl@gjl-virtual-machine:~/shellTest$ echo ${c[*]}
1 2 3
gjl@gjl-virtual-machine:~/shellTest$ unset c[2]
gjl@gjl-virtual-machine:~/shellTest$ echo ${c[*]}
1 2
gjl@gjl-virtual-machine:~/shellTest$ unset c
gjl@gjl-virtual-machine:~/shellTest$ echo ${c[*]}

gjl@gjl-virtual-machine:~/shellTest$ 

取消變量的類型

例如:a為整型,使用+ 刪除a的整型屬性

gjl@gjl-virtual-machine:~/shellTest$ declare -p a
declare -i a="12"
gjl@gjl-virtual-machine:~/shellTest$ declare +i a
gjl@gjl-virtual-machine:~/shellTest$ declare -p a
declare -- a="12"
gjl@gjl-virtual-machine:~/shellTest$

 

三、運算

 數值運算的三種方法

①declare(不推薦)

②使用expr或let 運算工具(不推薦)

gjl@gjl-virtual-machine:~$ a=12
gjl@gjl-virtual-machine:~$ b=23
gjl@gjl-virtual-machine:~$ c=$(expr $a + $b)
gjl@gjl-virtual-machine:~$ echo $c
35
gjl@gjl-virtual-machine:~$ let e=$a+$b
gjl@gjl-virtual-machine:~$ echo $e
35
gjl@gjl-virtual-machine:~$ 
 


注意事項:1、+兩邊需要空格
        2、$() 是指調用系統命令

 

③使用$(()) 或$[] 進行數值運算

gjl@gjl-virtual-machine:~$ a=11 ; b=33
gjl@gjl-virtual-machine:~$ echo c=$(($a+$b))
c=44
gjl@gjl-virtual-machine:~$ echo d=$[$a+$b]
d=44
gjl@gjl-virtual-machine:~$ 

例子:四則運算計算器(第一版)

#!/bin/bash
read -t 30 -p "please input num1:" num1
read -t 30 -p "please input num2:" num2
read -t 30 -p "please input operato:[+-*/]:" oper
[ "$oper" == "+" ] && echo "$(($num1+$num2))" && exit
[ "$oper" == "-" ] && echo "$(($num1-$num2))" && exit
[ "$oper" == "*" ] && echo "$(($num1*$num2))" && exit
[ "$oper" == "/" ] && echo "$(($num1/$num2))" && exit
echo "please input a varible operato"

缺點及注意點:此例中num1、num2未作判斷。且[] 兩邊需要空格,否則會報錯

 

四、變量的測試與內容置換

 

例如1:如果沒有設置變量a,則x值為新值。如果a設置為空,則x值為空值。如果設置為123,則x的值為123.

可以用來測試變量是否存在或者有值

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM