Je dois créer le fichier /opt/nginx/conf.d/default.conf
avec ce contenu via un script shell et créer le fichier s'il n'existe pas:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
}
Comment écrire du contenu multiligne via un script shell?
J'ai créé le répertoire
sudo mkdir -p /opt/nginx/conf.d
Mais je ne sais pas comment écrire un fichier.
text-processing
files
nginx
user3142695
la source
la source
Réponses:
résumé: utiliser
>>
pour ajouter, utiliser[ -f file ]
pour tester.essayer
cat <<EOF
est appelée " ici document ".$server
sera remplacé par sa valeur, ou vide s'il n'est pas défini.'EOF'
pour éviter de remplacer var le cas échéant.vous pouvez également avoir plusieurs échos (cela pourrait être pénible à maintenir s'il y a trop d'écho)
pré-paiement
il n'y a pas de préfixe direct dans bash, soit utiliser un fichier temporaire
ou éditez-le
la source
$
(s'ils sont présents) ne soient pas traités comme des variables et ne soient donc pas développéscat
les deux fichiers ensemble et de renommer le résultat.echo
s séparés , il est encore plus efficace d'avoir une seule redirection, en les mettant dans un bloc:{ echo "foo"; echo "bar"; echo "baz"; } >file
- de cette façon, nous ne rouvrirons pasfile
chaque fois que nous voulons simplement y écrire une seule ligne, et le fermer lorsque cette ligne est terminée.cat << EOF | sudo tee /opt/nginx/conf.d/default.conf ...
Si le fichier /opt/nginx/conf.d/default.conf n'existe pas , imprimez (f) la chaîne statique dans le fichier:
la source
printf '%s\n' "first line" "second line"
peut-être un peu plus lisible; de cette façon, on n'a pas besoin de lire toute la chaîne pour savoir où se trouvent les évasions ..