Environment-Variables
解密 unix 語句
我要破譯這裡所說的內容:
export IP=`/sbin/ifconfig | grep 'inet addr:'|grep -v '127.0.0.1'| cut -d: -f2 | awk '{print $1}'`
我知道是將IP設置為環境變數,但除此之外,其他一切是什麼意思?
它將列出系統上的所有非環回 IP 地址。假設您在此框上只有一個非環回 IP 地址,它會將系統的 IP 地址導出到環境變數“IP”。
首先一次執行管道一個“部分”。意思是,第一次執行
/sbin/ifconfig
看看它做了什麼。然後執行…
/sbin/ifconfig | grep 'inet addr:'
並從那裡繼續前進。
有很多事情發生。第一的:
export IP=`...`
表示在反引號之間執行命令(不是單引號,要小心)並將其輸出用作名為“IP”的變數的值。“導出”意味著任何子程序都將繼承名為“IP”的變數及其值。
該命令是一個管道,每個標準輸出輸入下一個標準輸入。
/sbin/ifconfig
生成有關網路介面的資訊列表。ifconfig 的所有輸出行都輸入到grep 'inet addr:'
. Grep 只是通過至少部分匹配第一個參數的文本行,一種稱為正則表達式的模式。該命令
grep -v '127.0.0.1'
僅傳遞不匹配的文本行。127.0.0.1 是“環回”IP 地址。眾所周知,我們不希望它進入名為“IP”的變數的值。該命令
cut -d: -f2
在其輸入中列印每行的第二個欄位。欄位由“:”(分號)分隔。該awk '{print $1}'
命令只列印第一個空格分隔的列。正如 TheDude 所寫,它將所有非環回 IP 地址作為字元串放入 shell 環境變數 IP 的值中。