日期:2014-05-16  浏览次数:21174 次

关于shell中sed使用单引号和双引号
本帖最后由 nameofhsw 于 2013-03-28 15:37:49 编辑
看了一些资料但是由于个人知识的欠缺。所以一直不得要领,只能来请教高手了。

问题本质应该是shell使用单引号和双引号的问题,不过具体使用的想在shell脚本中使用sed命令,所以就用他做实例了。

以下是具体代码,希望在/etc/test文件末尾添加一行。
因为要引用shell变量,所以sed使用了双引号,但是总是报错"sed:-e 表达式 #1,字符 5:未知的命令:“.”",这个应该怎么样处理?

#!/bin/bash

ip=$(ifconfig | awk -F'addr:|Bcast' '/Bcast/{print $2}')

sed -i "$a $ip:/export/primary /mnt/primary' /etc/test

------解决方案--------------------
在文件的最后添加,可以直接重定向

echo "123" >> /etc/test
------解决方案--------------------
你的$ip里面包含多行内容,不能直接放到sed里面使用。
只取第一行:
#!/bin/bash
ip=$(ifconfig 
------解决方案--------------------
 awk -F'addr:
------解决方案--------------------
Bcast' '/Bcast/{print $2}' 
------解决方案--------------------
 head -1)
sed "\$a $ip:/export/primary /mnt/primary" urfile


取多行:
#!/bin/bash
ip=$(echo $(ifconfig 
------解决方案--------------------
 awk -F'addr:
------解决方案--------------------
Bcast' '/Bcast/{print $2"\\n"}'))
sed "\$a $ip:/export/primary /mnt/primary" urfile