シェルスクリプトを介してこの内容のファイル/opt/nginx/conf.d/default.conf
を作成し、ファイルが存在しない場合は作成する必要があります。
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
}
シェルスクリプトを使用して複数行のコンテンツを作成するにはどうすればよいですか?
ディレクトリを作成しました
Sudo mkdir -p /opt/nginx/conf.d
しかし、ファイルの書き方がわかりません。
概要:>>
を使用して追加し、[ -f file ]
を使用してテストします。
試す
if [ ! -f myfile ]
then
cat <<EOF > myfile
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name $server ;
root /usr/share/nginx/html;
}
EOF
fi
cat <<EOF
は「 ここのドキュメント 」と呼ばれます。$server
はその値に置き換えられます。未定義の場合は空になります。'EOF'
を使用すると、varがある場合にそれを置き換えないようにすることができます。複数のエコーを使用することもできます(エコーが多すぎると、これを維持するのが面倒になる可能性があります)
echo "## foo.conf" > foo.conf
echo param1=hello >> foo.conf
echo param2=world >> foo.conf
bashに直接プリペンドはありません。一時ファイルを使用します
mv file file_tmp
cat new_content file_tmp > file
rm file_tmp
またはそれを編集する
sed -i -e '1r new_file' -e 'wq' file
/opt/nginx/conf.d/default.confファイルにnotが存在する場合、静的文字列をファイルに出力(f)します。
[ -f /opt/nginx/conf.d/default.conf ] || printf 'server {\n listen 80 default_server;\n listen [::]:80 default_server;\n server_name _;\n root /usr/share/nginx/html;\n}\n' > /opt/nginx/conf.d/default.conf