shell 變數和運算子

來源:互聯網
上載者:User

-本地變數  -影響變數的命令
-環境變數  -引號
-變數替換  -運算子
-位置變數  -運算式替換
-標準shell變數  -運算子的優先順序
-特殊變數

-變數:
-什麼是shell變數?
-本地變數
-環境變數
-變數替換(顯示變數)
-位置變數
-標準變數
-特殊變數
-影響 變數的命令

-本地變數:
-本地變數在使用者現在的shell生命期的指令碼中使用
-variable-name=value
-set顯示本地所有的變數
-readonly variable-name
#LOCALTEST="test"
#echo ${LOCALTEST}
test
#echo $LOCALTEST
test
#set  通過set查看變數
#exit  退出後查看一下還是否存在LOCALTEST變數
#readonly LOCALTEST
#LOCALTEST="test"
#readonly 查看當前shell有那些唯讀變數
#readonly -p
-環境變數
-環境變數用於所有使用者進程(經常稱為子進程).登入進程稱為父進程.shell中執行的使用者進程均稱為子進程.不像本地變數(只用於現在的shell)環境變數可用於所有子進程,這包括編輯器,指令碼和應用。
-$HOME/.bash_profile(/etc/profile)
-export
-env
#cat /etc/profile
#export Antiy="xi'an"
#env  然後尋找變數Antiy
#export  也可以查看
#readonly Antiy 設定為唯讀
#export Antiy="xidian" 看是否可以修改,會提示不可以,因為唯讀了。

-變數替換:
-用變數的值替換它的名字。
-echo
-在變數名前加$,使用echo命令可以顯示單個變數取值。
#testvar="this is a test"
#echo $testvar
this is a test
#echo ${testvar}
變數替換-續
${Variable name}  顯示實際值到variable name
${Variable name:+value} 如果設定了variable name,則顯示其值value,否則,為空白!
${Variable name:?value} 如果未設定variable name,顯示使用者定義錯誤資訊value!
${Variable name:-value} 如果未設定variable name, 則顯示其值value
${Variable name:=value} 如果未設定variable name,設定其值,並顯示
#echo ${testvar:+"xidian"}
xidian
#echo ${testvar1:+"xidian"}
為空白
#echo ${testvar1:?"no defined"}
bash:testvar1:no defined
#echo ${testvar1:-"xidian"}
#echo ${testvar:-"xidian"}
xidian
#echo ${testvar:="xidian"}
this is a test
#echo ${testvar2:="xidain"}
xidian
#echo $testvar2
xidian

-變數清除:

#echo $testvar
this is a test
#unset testvar
#echo $testvar

#echo $testvar2
#readonly testvar2
#unset testvar2
-位置變數:
-位置變數表示$0,$1,$2,... ...$9
-向指令碼中使用位置參數
-向系統命令傳遞參數
example01:
#!/bin/bash
#parm01
echo "這是指令碼的名稱:$0"
echo "這是指令碼的第1個位置參數:$1"
echo "這是指令碼的第1個位置參數:$2"
echo "這是指令碼的第1個位置參數:$3"
echo "這是指令碼的第1個位置參數:$4"
echo "這是指令碼的第1個位置參數:$5"
echo "這是指令碼的第1個位置參數:$6"
echo "這是指令碼的第1個位置參數:$7"
echo "這是指令碼的第1個位置參數:$8"
echo "這是指令碼的第1個位置參數:$9"
example02:
#!/bin/bash
#parm02
find   /home/shell/ -name $1 -print

-標準變數:
-bash預設建立了一些標準環境變數,可在/etc/profile中定義。
-EXINIT
-HOME
-IFS
echo $IFS
IFS=':'
-LOGNAME
-MAIL
-MAILCHECK
-MAILPATH
-TERM
-PATH
-TZ
-PS1
#set | grep "PS"
PS1='[\u@\h \w]\$ '
PS2='>'
-PS2
-PWD
-SHELL
-MANPATH
-TERMINFO
-特殊變數:
-$# :傳遞到指令碼的參數個數
-$* :以一個單字串顯示所有向指令碼傳遞的參數,與位置變數不同,此選項參數可超過9個。
-$$ :指令碼啟動並執行當前進程ID號
-$! :後台啟動並執行最後一個進程的進程ID號
-$@ :與$*相同,但是使用時加引號,並在引號中返回每個參數
-$- :顯示shell使用的當前選項,與set命令功能相同
-$? :顯示最後命令的退出狀態,0表示沒有錯誤,其他任何值表明有錯誤
#!/bin/bash
#parm01
echo "這是指令碼的名稱:$0"
echo "這是指令碼的第1個位置參數:$1"
echo "這是指令碼的第1個位置參數:$2"
echo "這是指令碼的第1個位置參數:$3"
echo "這是指令碼的第1個位置參數:$4"
echo "這是指令碼的第1個位置參數:$5"
echo "這是指令碼的第1個位置參數:$6"
echo "這是指令碼的第1個位置參數:$7"
echo "這是指令碼的第1個位置參數:$8"
echo "這是指令碼的第1個位置參數:$9"
echo "顯示參數個數:$#"
echo "顯示指令碼全部參數:$*"
echo "顯示進程ID:$$"
echo "顯示前一命令運行後狀態:$?"
影響變數的命令:
-declare
-export
-readonly
-set
-shift
-typeset
-unset
引號、雙引號、單引號、反引號、反斜線
運算子、運算子類型

  1. Linux叢集基礎
  2. Opera將推出Mobile Linux
  3. 玩轉linux之二-驅動開發技術探析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.