2015-09-15 28 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