一、shell變量沒有類型,全部變量都被看成字符串來處理。linux
二、shell變量的命名和c語言相同。shell
三、shell變量賦值和c語言略有不一樣,shell賦值要求等號的兩邊不能出現空格,而在linux C 中,通常爲了加強代碼的可讀性,等號的兩邊都加一個空格。若是shell變量的賦值爲字符串,並且字符串中含有空格,則必須給該字符串加單引號或雙引號。數組
四、shell變量不一樣於c語言,無需定義可直接賦值使用。例如:bash
#!/bin/bash #This is an example to show how to use variables version="2.6.24" name="linux-headers-2.6.24" echo -e "name:$name\nversion:$version"
執行結果:命令行
name:linux-headers-2.6.24 version:2.6.24
五、shell變量的做用範圍是本shell環境。例如:設計
咱們編寫以下腳本:code
#!/bin/bash #script name: exam.sh #This is a example to show the action range of a variable os_name=linux echo $os_name
當咱們使用./exam.sh執行腳本結果爲:繼承
linux
而後咱們在命令行中執行:進程
echo $os_name 結果爲空
而若是使用 source exam.sh 執行腳本或者是 .空格exam.sh命令執行腳本後鍵入echo $os_name 命令,咱們會獲得:ip
linux
六、有一種能繼承給子shell的變量,稱之爲環境變量。讓一個變量變身爲環境變量的方法爲:
export 變量名
例如:在終端中咱們敲入以下命令:
執行腳本:
#!/bin/bash echo $a
咱們什麼也不能獲得。而若是在終端中使用命令:
export a=linux
而後執行上述腳本,咱們的到結果:
linux
七、shell內置變量:bash設置了許多內置變量,在進行shell程序設計的時候可能須要用到。詳見:
$?:最後一次執行的命令的返回碼 $$:shell進程本身的PID $!:shell進程最近啓動的後臺進程PID $#:shell腳本參數個數,不含腳本名 $0:腳本文件自己的名字 $一、$2...:第一個參數、第二個參數... $*:表明全部的參數(不含腳本名)組成的字符串 $@:命令行參數組成的多個字符串,每一個參數對應一個
八、設置shell變量屬性:
readonly:使用readonly命令能夠