2015-09-15 24 views
-2

我試圖運行一個命令,抓取我當前的IP地址(或地址),並將其保存到一個變量,以便我可以在屏幕上看到。我想這樣做,以便我可以在腳本中運行此操作並在循環中使用該變量。引號取消命令在bash傳遞給變量

userip='ifconfig | grep "inet addr:" | cut -d: -f2 | awk '{print $1}'' 

echo $userip 

每次我運行這個命令時,它的基本上都是把語音標記混淆起來,從而沒有運行整個命令。

這真的只是在單引號中得到了'ifconfig | grep "inet addr:" | cut -d: -f2 | awk '

任何意見將是非常有益的感謝。

+1

你不能在單引號字符串中嵌入單引號(''{print $ 1}'')。事實上,你自己的問題的語法高亮可以作爲線索。 –

+1

**因此不運行整個命令**執行'echo'將不會運行'ifconfig'命令。在這裏做? – anubhava

+0

我試過混合起來雙引號和單引號。 我的echo命令只是輸出結果,希望我的IP地址會出現。 – robot420

回答

0

你的問題是,你有單引號是不正確的,他們應該是重音如此,不是'而是'

+2

或更好:'$()' – Biffen

+0

非常感謝! – robot420

0

檢查你的命令字符串來隔離IP地址包含在反引號。該反引號`比單引號'或雙引號「(假設命令行方式更適合您的操作系統)不同。因此:

userip=`ifconfig | grep "inet addr:" | cut -d: -f2 | awk '{print $1}'` 

的反引號引起要執行的命令,並將結果返回。反向引用在大多數鍵盤上都低於tilda〜(不確定後面的引號出現在我的答案中,只是習慣了堆棧交換。)

+0

真棒謝謝,我從來沒有使用過後面的引號。歡呼夥計。 – robot420