2016-07-25 64 views
-2

我想逃避以下脚本通过shell命令行选项(/ bin/sh -c)运行它。如何转义shell脚本以使用command_string选项运行它?

privateIP=$(ifconfig eth0 | grep "inet " | awk \'{print $2}\'); 
sed -i "s/http:\/\/:/http:\/\/$privateIP:/g" init.conf 

请详细说明答案。

+0

你需要证明你是如何使用'/ bin/sh的-c'。一旦你分配了它,你打算如何处理'$ privateIP'?您确定所返回的价值是否符合您的需求?而WilliamPursell向你展示了当你在str或替换中有'/'字符时替换的正确语法,即''@ http .... @ ..... @ g''。 。如果你得到一个sed错误,那么你应该显示正在执行的确切命令。祝你好运。 – shellter

回答

2

你的问题是不明确的,但也许你正在寻找:

sh -c 'privateIP=$(ifconfig eth0 | awk "/inet/{print \$2}"); 
    sed -i "[email protected]://:@http://$privateIP:@g" init.conf' 
+0

感谢您的回复。我试过你的命令,我得到了 - sed:-e表达式#1,字符27:未终止的命令错误。仅供参考我试图运行一个shell脚本.sh文件内嵌/ bin/sh -c选项并坚持转义脚本 – KarthikJ