首先給出變數的定義:
變數是指沒有固定的值,可以改變的數。變數以非數字的符號來表達,一般用拉丁字母。
變數的設定需要使用「=」,等號左邊為變數名稱,右邊為變數內容,變數的定義遵循以下規則:
等號兩邊不能直接使用空格,如下所示為錯誤:
[haoqiqi@localhost ~]$ myname = haoqiqi
bash: myname: 未找到命令...
[haoqiqi@localhost ~]$ myname=hao qiqi
bash: myname: 未找到命令...
變數名稱不能只能是英文本母與數字,且開頭不能是數字
若變數內容中含有空格,則需要將整個變數內容用雙引號「或單引號『引起來。
可使用跳脫字元」\「將特殊符號(如enter、$、\,空格等)變成一般字元
[haoqiqi@localhost ~]$ myname=hao\ qiqi
若變數為擴增變數內容時,需要使用」$變數內容「或"$」累加內容,如下所示:
[haoqiqi@localhost ~]$ path="$path":/home/bin
[haoqiqi@localhost ~]$ path="$:/home/bin"
使用export宣告環境變數。
linux系統預設的變數通常為大寫
ps.自己命名的變數可以使用小寫加以區分。
取消變數使用unset,例如:
[haoqiqi@localhost ~]$ unset myname
要輸出變數時,需要用到echo,使用形式如下:
echo $
[haoqiqi@localhost ~]$ myname=hao\ qiqi
[haoqiqi@localhost ~]$ echo $
hao qiqi
全域性變數是指在整個環境即所有檔案下都管用的變數,能夠被子程式所引用。子程式只能繼承父程式的全域性變數,不能繼承父程式的區域性(自定義)變數。
在shell環境中,可以利用env、set、export檢視全域性變數。
[haoqiqi@localhost ~]$ export 變數名稱
1.2.3.1 read:讀取鍵盤
讀取來自鍵盤的變數,c++中使用cin,matlab、shell中使用read,但是用法不同。
[haoqiqi@localhost ~]$ read [-pt]variable
read 讀取指令
-p:後面可以接提示字元!
-t:後面可以接等待時間,單位為秒。
例示:
[haoqiqi@localhost ~]$ read myname
haoqiqi
[haoqiqi@localhost ~]$ echo $
haoqiqi
1.2.3.2 陣列變數
陣列的定義方式如下:
var[index]=content
var表示陣列名
index表示變數位置
content表示內容
注意:等號兩側不能加空格
舉例如下:
[haoqiqi@localhost ~]$ var[1]="first"
[haoqiqi@localhost ~]$ var[2]="secend"
[haoqiqi@localhost ~]$ var[3]="third"
[haoqiqi@localhost ~]$ echo "$,$,$"
first,secend,third
1.2.3.3 declare/typeset:宣告變數的型別
若declare後面沒有加引數,則會輸出所有的變數名稱與內容,與set類似。
declare後加引數:
[haoqiqi@localhost ~]$ declare [-aixr]variable
選項與引數:
-a:將後面名為variable的變數定義為陣列(array)型別
-i:將後面名為variable的變數定義為整數數字(integer)型別
-x:用法與export一樣,宣告全域性變數
-r:將變數設定為唯讀(readonly)型
舉例:
[haoqiqi@localhost ~]$ sum=100+200+300
[haoqiqi@localhost ~]$ echo $
100+200+300
[haoqiqi@localhost ~]$ declare -i sum1=100+200+300
[haoqiqi@localhost ~]$ echo $
600
1.2.3.4 變數內容的刪除、取代(optional)
變數的設定方式說明$
若變數內容包含」舊字串「,則將第乙個舊字串取代為新字串
$若變數內容包含」舊字串「,則將所有的舊字串取代為新字串
舉例如下:
[haoqiqi@localhost ~]$ path=$
[haoqiqi@localhost ~]$ echo $
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/haoqiqi/.local/bin:/home/haoqiqi/bin
[haoqiqi@localhost ~]$ echo $
/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/haoqiqi/.local/bin:/home/haoqiqi/bin
對$的解釋:
#表示從前向後刪除
/*local/bin: 表示需要被刪除的部分,由/開始,*取代0到無窮多任意字元
刪除部分如下:
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/haoqiqi/.local/bin:/home/haoqiqi/bin
[haoqiqi@localhost ~]$ path=$
[haoqiqi@localhost ~]$ echo $
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/haoqiqi/.local/bin:/home/haoqiqi/bin
[haoqiqi@localhost ~]$ echo $
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/haoqiqi/.local/bin:/home/haoqiqi/bin
1.2.3.5 變數的測試與內容替換
測試方法:
[haoqiqi@localhost ~]$ new_var=$
其關鍵符號為減號」-「,若old_var存在,則new_var等於old_var,否則等於content
舉例如下:
[haoqiqi@localhost ~]$ echo $
注意這裡是返回值為空,不是我故意留的空行
[haoqiqi@localhost ~]$ username=$
[haoqiqi@localhost ~]$ echo $
yourname
[haoqiqi@localhost ~]$ myname="haoqiqi"
[haoqiqi@localhost ~]$ username=$
[haoqiqi@localhost ~]$ echo $
haoqiqi
其它測試與替換操作:
var與str為變數,針對str是否設定決定var的值。
變數設定方式
str沒有設定
str為空字串
str為非空字串
var=$
var=expr
var=
var=$str
var=$
var=expr
var=expr
var=$str
var=$
var=
var=expr
var=expr
var=$
var=
var=
var=expr
var=$
str=expr
var=expr
str 不變
var=
str 不變
var=$str
Linux筆記12 Shell基礎
histroy 歷史命令一般存放在 bash histroy檔案中,根據執行這個命令使用不同的引數,對此檔案的內容可以寫入或是清空。歷史命令缺省會儲存1000條,這個配置可以在環境變數 etc profile配置檔案中進行修改。tab鍵 按tab鍵進行命令或檔名補全。別名 alias,可以給乙個命令...
12 shell 字串處理
tips 在上面替換結構中string不一定是常值的,可用另外乙個變數的值或是一種命令的輸出。是去掉左邊 在鍵盤上 在 之左邊 是去掉右邊 在鍵盤上 在 之右邊 和 中的單一符號是最小匹配,兩個相同符號是最大匹配。tips 這四種模式中都不會改變 variable 的值,其中,只有在pattern中...
Linux基礎 12 shell裡所有的計算器
expr bc bc l 浮點運算 yum install bc y root miwifi r3 srv echo scale 2 1 3 bc l 33測試檔案狀態 d 目錄 s 檔案長度 0 非空 f 正規檔案 w 可寫 r 可讀 x 可執行 l 符號連線 u 檔案有 suid 位設定字串測試...