在OS X上用sed和shell变量替换路径
我在Mac OS X上并使用sed进行就地替换.
基本上我有这个: #!/bin/sh -e PREFIX="$1" sed -i bak -e 's|OCAMLDIR|"${PREFIX}"|g' ocamloptrev 其中PREFIX是路径,因此我使用|. 不幸的是,文件路径中的变量没有像我预期的那样得到评估,我最终得到: OCAMLC="${PREFIX}"/bin/ocamlopt 如何在sed命令中获得${PREFIX}的正确评估? 解决方法
试试这个:
#!/bin/sh -e PREFIX="$1" sed -i bak -e 's|OCAMLDIR|'"${PREFIX}"'|g' ocamloptrev 你基本上做的是“退出”/越过单引号字符串,输入双引号字符串,解释双引号内的变量,然后再次输入单引号. 通过这个简单的例子,我们也可以使用双引号,它允许解释变量: #!/bin/sh -e PREFIX="$1" sed -i bak -e "s|OCAMLDIR|${PREFIX}|g" ocamloptrev 如果您尝试在单引号内使用双引号(“”),则它们也不会被解释. This part of the Bash manual更详细地解释了这一点.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- PDF lib安装在Linux服务器上失败.使用pecl install pdflib
- Linux命令等待SSH服务器启动
- linux – 任何“at”作业执行时的日志?
- linux – 从PHP发送带有mail()的邮件日志(sendmail?)
- linux – 如何在服务器重启后自动启动mysql(CentOS其他发行
- linux – 我需要多少IOPS?我的工作量瓶颈是存储
- linux 查看网卡驱动信息
- Vi Cscope:在vim中使用“cscope find c function”,找到多
- linux – Bash while while循环意外停止
- linux – 如何使用tcpkill实用程序终止TCP连接