bash學習之變量(二)

每一種語言都少不了變量,在學習完變量之後又有了許多新的理解,這裏就詳細說明一下變量。

1.變量分類
變量分爲兩種類型,系統變量(環境變量)和用戶變量。系統變量是系統需要用到的變量,用戶也可以用;用戶變量是用戶自己定義的變量,供用戶自己去用。在bash shell中環境變量可以分爲全局變量和局部變量。局部變量是僅在當下的shell中可以用,全局變量是之後所有shell中都可以用(包括當下shell)。用戶變量的分類在程序中和其他c之類的語言分類相似。

2.用戶變量
程序1:

#!/bin/bash
var=name
echo $var

運行結果:
在這裏插入圖片描述
程序說明:
第2行定義一個變量名爲var,值爲字符串name。注意bash中變量賦值的等號兩邊不能有空格。
當需要掉用變量的值時需要在變量名字前加上$字符,當在一些系統無法判斷出具體的變量是還要用{}把變量給括起來以免產生歧義。
程序2:

#!/bin/bash
read name
echo $name
echo
read -p "hello :" var
echo $var
echo
read -t3 s
echo $s
echo

運行結果:
在這裏插入圖片描述
程序說明:
第2行說明系統要讀入一個變量,並把值給後面的name中
第5行帶有-p 的read可以允許讀入多個變量,並切可以在前面加上一條註釋信息
第8行-t 說明允許最長輸入時間,單位秒。另外-s 是以密文信息讀入,不顯示,類似輸入密碼的時候。

3.一些特殊的變量

$+數字 :代表這命令行中傳遞過去的參數,類似c語言中年傳遞到main()中的參數,java中給String []arg 的一樣。其中$0代文件名
程序3:

#!/bin/bash
echo $0
echo $1
echo $2

運行結果:
在這裏插入圖片描述
注:當系統參數大於9的時候再引用就要加{}瞭如${10}.
$# 返回參數個數 (不計文件名)
$? 腳本返回值
$@ | $* 兩個廣義上相同(具體差異可以自己去查),返回參數內容

到了這裏已經初步瞭解了bash的的信息,並且掌握了bash的輸入輸出的基本命令。下面是系統的一些擴展知識,不感興趣可以忽略哦。下一步的文章將會講解bash的一些面向程序設計語言的語法結構的中級知識。

4.系統變量(擴展)

最初瞭解系統變量是在windows系統中,那時候還是第一次安裝java環境,由於要給位置信息添加到環境變量種,從那時起一直到看完這個一直都以爲環境變量就是位置信息^_^。看完這裏才明白了原來是之前把變量看的太過於狹隘了,環境變量它也是一個變量,不對,是一類變量的統稱,裏面包含了許多的變量。而路徑只不過是其中的一類而已,尤其是在一切皆文件的Linux系統更合乎所以。想要查看環境變量終端輸入env即可查看所有系統變量。
環境變量的位置有有三個/etc/profile $HOME/.profile $HOME/bash .profile 。開機時啓動順序也是如此。(第三個我也沒找到 ^_^)。
可以通過export導入到環境變量中,此時後續的shell中也可以運行,如果不導入則會報錯,當不在想用改變量時,可以用unset取消變量。由於理論和我具體操作時候出現了差異(可能是我係統的問題,也可能是這裏知識本身存在的問題,或者這裏內容太過老舊,新系統有差異),因此這裏就不在做具體說明。想深入瞭解的可以自己去查閱資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章