命令在bash shell中替换,当命令本身有引号时

时间:2014-02-16 11:06:57

标签: regex bash sed

我尝试使用sed提取文本文件的最后一行并将其移动到变量。但是,使用引号的命令替换会破坏已使用引号的sed命令。

sed '$!d' cookie.txt

返回:localhost FALSE /XSS/ FALSE ****** loggedIn No

但是,尝试将其移动到变量,如下所示:

varin='sed '$!d' cookie.txt'

没有为变量$ varin

提供输出

对于PHP,我们可以使用双引号和单引号嵌套引号,这里有类似的内容吗?

2 个答案:

答案 0 :(得分:3)

试试这个:

var=$(tail -1 cookie.txt)

或使用sed:

var=$(sed '$!d' cookie.txt)

答案 1 :(得分:2)

如果您遇到$(...)之类的“localhost:command not found”这样的错误,听起来好像是在命令替换中嵌入反引号,比如

variable=$(`sed '$!d' cookie.txt`)

反引号将运行sed命令以生成以“localhost”开头的字符串,然后因为该字符串在$(...)内,将被视为命令跑步。只需使用

variable=$( sed '$!d' cookie.txt )

应该做你想做的事。