shell變量

linux中shell變量$#,$@,$0,$1,$2的含義解釋: 
變量說明: 
$$ 
Shell本身的PID(ProcessID) 
$! 
Shell最後運行的後臺Process的PID 
$? 
最後運行的命令的結束代碼(返回值) 
$- 
使用Set命令設定的Flag一覽 
$* 
所有參數列表。如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有參數。 
$@ 
所有參數列表。如"$@"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有參數。 
$# 
添加到Shell的參數個數 
$0 
Shell本身的文件名 
$1~$n 

添加到Shell的各參數值。$1是第1參數、$2是第2參數…。

使用echo命令顯示變量的值。
使用一個定義過的變量,只要在變量名前面加美元符號($)即可。變量名外面的花括號是可選的,加不加都行,加花括號是爲了幫助解釋器識別變量的邊界。
除了PATH, HOME, LOGNAME外,系統預設的環境變量還有哪些呢?
使用env命令即可全部列出系統預設的全部系統變量了。
PATH 決定了shell將到哪些目錄中尋找命令或程序
HOME 當前用戶主目錄
HISTSIZE 歷史記錄數
LOGNAME 當前用戶的登錄名
HOSTNAME 指主機的名稱
SHELL 前用戶Shell類型
LANG 語言相關的環境變量,多語言可以修改此環境變量
MAIL 當前用戶的郵件存放目錄
PWD 當前目錄
env命令顯示的變量只是環境變量,系統預設的變量其實還有很多,你可以使用set命令把系統預設的全部變量都顯示出來。

只讀變量
使用 readonly 命令可以將變量定義爲只讀變量,只讀變量的值不能被改變。
eg:#!/bin/bash
    myUrl="http://see.xidian.edu.cn/cpp/shell/"
    readonly myUrl
    myUrl="http://see.xidian.edu.cn/cpp/danpianji/"
==>/bin/sh: NAME: This variable is read only.
刪除變量
使用 unset 命令可以刪除變量。語法: unset variable_name
變量被刪除後不能再次使用;unset 命令不能刪除只讀變量。
變量替換
${var} 變量本來的值
${var:-word} 如果變量 var 爲空或已被刪除(unset),那麼返回 word,但不改變 var 的值。
${var:=word} 如果變量 var 爲空或已被刪除(unset),那麼返回 word,並將 var 的值設置爲 word。
${var:?message} 如果變量 var 爲空或已被刪除(unset),那麼將消息 message 送到標準錯誤輸出,可以用來檢測變量 var 是否可以被正常賦值。
若此替換出現在Shell腳本中,那麼腳本將停止運行。
${var:+word} 如果變量 var 被定義,那麼返回 word,但不改變 var 的值。

自定義變量,但是該變量只能在當前shell中生效
要想設置的變量一直生效怎麼辦?有兩種情況:
1) 要想系統內所有用戶登錄後都能使用該變量
需要在/etc/profile文件最末行加入 “export myname=Aming” 然後運行”source /etc/profile”就可以生效了。此時你再運行bash命令或者直接su - test賬戶看看。
2)只想讓當前用戶使用該變量
需要在用戶主目錄下的.bashrc文件最後一行加入“export myname=Aming” 然後運行”source .bashrc”就可以生效了。這時候再登錄test賬戶,myname變量則不會生效了。上面用的source命令的作用是,講目前設定的配置刷新,即不用註銷再登錄也能生效。

那麼在linux下設置自定義變量有哪些規則呢?
a. 設定變量的格式爲”a=b”,其中a爲變量名,b爲變量的內容,等號兩邊不能有空格;
b. 變量名只能由英、數字以及下劃線組成,而且不能以數字開頭;
c. 當變量內容帶有特殊字符(如空格)時,需要加上單引號;
有一種情況,需要你注意,就是變量內容中本身帶有單引號,這就需要用到雙引號了。
d. 如果變量內容中需要用到其他命令運行結果則可以使用反引號(esc按鍵下);
eg:myname=`pwd`
echo $myname
==>/root/test
e. 變量內容可以累加其他變量的內容,需要加雙引號;
eg:myname="$LOGNAME"Aming
echo $myname
==>rootAming

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