首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

关于shell中sed运用单引号和双引号

2013-04-02 
关于shell中sed使用单引号和双引号本帖最后由 nameofhsw 于 2013-03-28 15:37:49 编辑看了一些资料但是由

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

热点排行