Ⅰ shell 怎麼取遠程伺服器的變數值
我們在使用shell時,經常會碰到shell變數這個名詞,那麼,什麼是shell變數呢?shell變數就是在shell程序中保存系統和用戶所需要的各種各樣的值。這個值就是變數,這個值可以由我們自己來定義。shell變數可以分為以下幾種類型:
1 環境變數
2 預定義變數
3 位置變數
4 用戶自定義變數(也叫本地變數)
1 首先講一下什麼是環境變數,環境變數是linux系統為用戶提前設定好的一類shell變數,它的功能是設置當前shell中的工作環境,包括用戶的宿主目錄,命令查找的路徑等。
我們如何查看我們的環境變數呢?我推薦大家使用#set | more命令,唯謹埋set命令用於查看系統的環境變數,由於環境變數可能會比較長,這是我們可以加上一個| more用於分頁查看。屏幕上輸出了很多信息,我們該怎麼看這些信息呢?舉個簡單的例子,「BASH=/bin/bash」等號左邊的代表變數名稱,右邊代表變數值。還有沒有別的方法查看環境變數呢?答案是有,我們可以使用#echo $BASH命令,請注意,echo語句的作用是顯示字元串或shell變數的值,當使用「$變數名」作為echo的輸出命令參數的時候,就顯示的是指定的變數值。如果不加「$」,則表示輸出echo後面的字元串。
下面講一下常見的環境變數:
USER表示當前登入用戶的名稱
UID表示當前登入用戶的UID號
SHELL表示當前登入用戶使用的shell
HOME表示當前用戶登入的宿主目錄
PWD表示當前登入用戶所在的位置
PATH表示用戶敲入命令的搜索路徑,我們在linux執行的命令一般都位於/XX/bin下面,我們每次敲命令都不需要將路徑輸入完整這就是PATH變數的功勞,shll程序根據PATH變數中設定的路徑會自動搜索命令。
PS1和PS2分別代表主提示符和輔提示符。主提指螞示符是用戶在命令行狀態下看到的提示符字元串,如[root@localhost ~]#之類的。輔提示符是用於我們如果輸入一個比較長的命令的時候需要換行的時後,在命令的第二行出現的提示符,默認為「>」。如何換行呢?只需要在命令的行尾輸入「\」回車即可。
說完常見的環境變數,再說說環境變數配置文件。環境變數配置文件可以分為全局配置文件和用戶配置文件。
全局配置文件:profile和bashrc,profile負責全局環境設置,並應用於說有用戶登入的shell;bashrc用於定義全局函數和別名。這兩個配置文件都位於/etc目錄下,修改全局配置文件需要root許可權。
用戶配置文件:.bash_profile和.bashrc。.basj_profile的作用類似於全局環晌豎境變數的profile,但只對當前用戶起作用;.bashrc的作用類似於全局環境變數的bashrc,用於定義函數和別名。這兩個文件分別位於當前登入用戶的宿主目錄下,由於是隱藏文件,用戶可以使用ls -al命令來查看。如果對用戶的配置文件做了錯誤的修改,可以通過復制/etc/skel/目錄下模板的所有文件復制到宿主目錄中,從而恢復初始配置。
2 預定義變數
預定義變數是系統中已經定義好的變數,我們只能使用預定義變數而不能創建或修改它。預定義變數的格式為「$」符號加上另外一個符號組成的。下面介紹一些常見的預定義變數。
$#表示位置參數的數量
$*表示所有位置參數的內容
$?表示表示命令執行後返回的狀態,它用於檢查上一個命令執行是否正確;當你輸入#$?後顯示的值為0則表示之前輸入到值為正確的;若為其它值都代表錯誤的。
$$表示當前進程的進程號
$!表示後台運行的最後一個進程的進程號
$0表示當前執行的進程名
3 位置變數
位置變數與shell腳本程序所執行時使用的命令參數行對應,命令行中的參數是按照從左到右順序付給位置變數的。
4 用戶自定義變數(本地變數)
用戶自定義變數顧名思義就是用戶自己定義的變數,只在自己的系統中有效。設置方法為#DAY=Sunday,使用方法為#echo $DAY命令輸出的格式為Sunday。這個定義的變數只能在當前shell中使用,要是想在其他shell中使用的話,就必須將它設置為全局變數,方法為#export DAY即可在任何本地shell中生效。如果你想刪除用戶自定義變數,那麼就要使用#unset DAY即可,unset命令無論是否輸出為全局變數,都可以刪除。