Linux中的變量, locale, read, declare,ulimit

echo, 設置變量, 取消變量

  • 可以通過echo $var 的方式打印變量, 若系統中沒有變量, 則不會打印任何東西
  • 變量可以直接設置. 假設要設置myName的變量, 則可以這樣寫:
myName=Helloyong

myName就是新設置的變量, 其變量內容是Helloyong.

  • 可以使用unset 命令取消變量.

取消myName的變量:

unset myName

變量的設置規則

  • 變量和變量內容之間以等號鏈接, 且等號兩邊沒有空格
  • 變量名是不以數字開頭的英文或者數字.
  • 變量內容中的特殊字符, 若在單引號之間則爲一般字符, 若在雙引號之間則保持原有特性.
  • 可以使用轉義字符()對特殊符號進行轉義.
  • 使用反引號和$(cmd)可以執行命令.

環境變量

在終端使用env命令查看環境變量, envenvironment的縮寫. 使用set命令查看所有變量(包括自定義變量)

常見的變量有HOME,PATH,LANG等.

語系變量locale

使用locale可用來查詢本機Linux支持的所有語系。加上參數a即可。

yw@yw-PC:~$ locale -a
C
C.UTF-8
en_US.utf8
POSIX
zh_CN.utf8

如果不加參數a, 可以查看設置

yw@yw-PC:~$ locale
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=

當設置LANG或者LC_ALL時, 系統默認將其它未設置的語系變量被LANG或LC_ALL替代.

Linux中的語系文件放置在/usr/lib/locale目錄中.

整體系統默認的語系定義在/etc/sysconfig/i18n中, 可以在這個文件修改你想要的語系.

變量鍵盤讀取, 數組與聲明, read, array, declare

read

使用read 可以讀取用戶的輸入, 用法

read var 

在命令行打入這個命令並回車後, 輸入字符串, 這個字符串存儲於var 這個變量中.
read 還有兩個參數可以使用.
p: 後面可以接提示符
t: 等待用戶輸入的時間, 秒爲單位
例如, 讓用戶在30s內輸入一個名字:

yw@yw-PC:~$ read -p "Please input a name: " -t 30 name
Please input a name: Join

之後執行echo $name 這個命令會打印出Join

注意: 當我們退出當前的命令行時, name變量就會銷燬.
在使用read時, 會進入子進程, 變量也就是定義在子進程中的. 當退出bash時, 子進程消失. 子進程中的變量也隨之銷燬. 如果想要稱爲全局變量, 則可以使用export命令.

declare/typeset

declare和typeset 的功能一樣, 都是聲明變量的類型. 系統默認聲明的變量時字符串類型. 我們以declare爲例. 用法如下:

declare var # 聲明變量var

有以下參數設置變量的類型.
a: 將變量var設置爲array類型
i: var爲integer類型
x: var爲環境變量(全局變量)
r: 只讀類型, 不可更改也不可重設.

限制用戶行爲, ulimit

ulimit用於限制用戶的行爲, 用法如下:

ulimit [-SHacdfltu] <配額>

參數分別代表不同的屬性, 配額就是屬性值.
如, t表示使用cpu的最長時間(秒), 設置其爲30s:

ulimit -t 30

其他參數含義如下:
S: 警告設置, 超過此值會有警告信息
H: 嚴格設置, 不能超過此值
a: 列出所有設置及其值
f: 此shell可以創建的最大文件容量, 單位KB
d: 進程可以使用的最大斷裂內存容量
l: 可用於鎖定的內存量
u: 單一用戶可以使用的最大進程數量

變量的刪除, 替換

假設有變量var1, 如果想把var1的內容賦值給var2, 那麼我們可以這樣做:

var2=${var1}

再使用echo $var2命令會發現內容和var1的內容一樣.
假如沒有變量var1, 那麼var2就不會被設置. 如果我們想這樣做呢? 當設置了var1時, 就將var1的內容給var2, 如果沒有設置var1, 則個var2一個默認值. 可以使用減號-. 形如var2=${var1-content}

var2=${var1-"var2"}

此時, 當var1沒有設置時, var2的值就是”var2”. 這會有一個小bug, 當我們的var1爲空字符串時"", 我們再執行上面的命令, var2的值也就是空字符串. 這並不是我們想要的. 如果我們想在var1爲空時也將後面跟的內容賦值給var2, 可以在減號前面加上一個冒號:

var1=""
var2=${var1:-"var2"}

此時, var2的值爲”var2”.
在var1和content之間還可以有其他符號, 如下表: (來源於鳥哥的linux私房菜)
變量刪除替換表

變量內容的刪除與替換

注意這個是變量內容的刪除與替換.

變量內容的刪除與替換使用如下語法: (來源於 鳥哥的linux私房菜)
這裏寫圖片描述

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