关于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