变量在sed中的shell脚本中不起作用

时间:2019-04-02 06:55:25

标签: linux bash ubuntu

我有变量jr=127.0.1.1 ysrnsk。我必须将其替换为/etc/hosts文件的第二行。 sudo sed -i.bak '2 s/^.*$/'$jr'/' /etc/hosts 这就是我所做的。但是它没有提供任何输出

2 个答案:

答案 0 :(得分:0)

由于您正在使用-i选项,因此sed命令不会输出任何内容

并且您必须对所有内容都加双引号:

Webelement ele=driver.findelement()

Actions ob = new Actions(driver);
ob.moveToElement(ele);
ob.click(ele);
Action action  = ob.build();
action.perform();

答案 1 :(得分:0)

jr="127.0.1.1 ysrnsk"

^^在此处提供引号,意味着包含所有数据,否则您的输入仅为127.0.1.1

sed -i.bak '2 s/^.*$/$jr/' /etc/hosts

-i参数进行适当的编辑。不提供输出。如果要在编辑之前“测试”输出,请运行

sed .bak "2 s/^.*$/'$jr'/" /etc/hosts
bash中的

''实际上就是您键入的内容。要允许参数扩展,例如将变量变成其实际含义,请使用双引号""

sed .bak "2 s/^.*$/'$jr'/" /etc/hosts
                   ^   ^ These don't do anything, other than again, tell bash to interpret this literally

所以:

sed .bak "2 s/^.*$/$jr/" /etc/hosts # This to see your output
sed -i .bak "2 s/^.*$/$jr/" /etc/hosts # This to commit it without output