linux - 在 shell 脚本中使用 sed 替代不起作用

标签 linux bash .htaccess shell sed

我制作了一个安装脚本,它基本上是在 RewriteEngine On 行之后通过在 shell 脚本中使用 sed 插入一些 RewriteRule

#!/bin/bash

REWRITE_RULE="RewriteRule \^catalog\/category\/view\/id\/([0-9]+)$ http:\/\/localhost\/app\/#?c=$1 [NE,L,R=301]"
FILE_PATH=".htaccess"

sed -i "s/RewriteEngine on/RewriteEngine on\n\n$REWRITE_RULE/g" $FILE_PATH

除了报错什么都不做

: No such file or directory

我在 shell 中尝试了相同的命令,它没有任何问题地工作并更新了我的 .htaccess 文件

我是 shell 脚本的新手,所以不知道通过 shell 和通过脚本使用相同命令的区别。请指导

最佳答案

脚本本身没问题。您确定上面发布的行完全是您从脚本中提取的行吗?

错误消息表明您提供了一个空名称作为文件名,因此我建议您输入一个

echo "FILE_PATH: $FILE_PATH"

直接在 sed 命令之前检查变量是否设置正确。

关于linux - 在 shell 脚本中使用 sed 替代不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20801978/

相关文章:

linux - 如何在 linux 中制作类似 nano/pico 的程序

c - 带接收超时的套接字 : What is wrong with this code?

linux - 解析 laSTLog 的输出?

arrays - 无法在 bash 脚本内对文件名内带有空格的文件数组进行 tar 压缩

linux - 如何将一列的值除以另一列并在新列中打印结果?

mysql - mysql列中的时间戳

string - bash 替换字符串末尾的一个字符

linux - 重定向 HTACCESS

.htaccess - 带有 .htaccess 的多个查询参数 RESTful URL

apache - HTACCESS RewriteRules 具有漂亮的 SEO url(不允许访问物理文件位置)