如果 Linux 中不存在数据,如何将数据添加到文件中



我正在使用一个基于PHP的web应用程序,我只需要访问HTTPS,但HTTP也接受。

和安装web应用程序,我使用一个shell脚本文件(例如:install.sh),它将通过运行它来安装所有需求。

我想在httpd.conf中添加HTTP访问的重定向规则为此,我需要在install.sh中添加一些逻辑,它在httpd.conf中添加了重定向规则,但它没有添加我的逻辑。

https重定向逻辑需要添加到httpd.conf

<VirtualHost *:80>
ServerAlias *
RewriteEngine On
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [redirect=301]
</VirtualHost>

install.sh

#!/bin/bash
sudo grep -qxF '<VirtualHost *:80>n    ServerAlias *n    RewriteEngine Onn    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [redirect=301]n</VirtualHost>' /etc/httpd/conf/httpd.conf
if [ $? -eq 0 ]; then
sudo sed -i "$ a <VirtualHost *:80>n    ServerAlias *n    RewriteEngine Onn    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [redirect=301]n</VirtualHost>" /etc/httpd/conf/httpd.conf
fi

我试了上面的代码,但它不工作

我是Linux的新手,谁能帮助我如何将数据附加到文件中,如果它不存在

这个脚本为我工作:

#!/bin/bash

#Here we replace spaces, newlines, tabs with nothing, to easy comparision using grep
cat /etc/httpd/conf/httpd.conf | sed ':a;N;$!ba;s/n//g' | sed 's/ //g' | sed 's/t//g' | grep -F '<VirtualHost*:80>ServerAlias*RewriteEngineOnRewriteRule^(.*)$https://%{HTTP_HOST}%{REQUEST_URI}[redirect=301]</VirtualHost>'
if [ $? -eq 1 ]; then
echo -e "<VirtualHost *:80>n    ServerAlias *n    RewriteEngine Onn    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [redirect=301]n</VirtualHost>" >> /etc/httpd/conf/httpd.conf
fi

最新更新