Änderungen

DCEM's bash script howto

1.645 Byte hinzugefügt, 10:23, 26. Mär. 2020
minor corrections (by SublimeText.Mediawiker)
This way it is easy to see what customisations are intended/needed.
 
=== Fail fast ===
I think it is a good idea to have a script stop as soon as any error appers.
 
[https://codeinthehole.com/tips/bash-error-reporting/ Bash error reporting - by David Winterbottom] promotes a nice concept which I modiefied for better readability.
 
<nowiki>
#!/bin/bash
set -o nounset # treat unset variables as an error when substituting
set -o pipefail # the return value of a pipeline is the status of
# the last command to exit with a non-zero status,
# or zero if no command exited with a non-zero status
set -o errexit # exit immediately if a command exits with a non-zero status
 
function print_error {
read line file <<<$(caller)
echo "An error occurred in line $line of file $file:" >&2
sed "${line}q;d" "$file" >&2
}
trap print_error ERR</nowiki>
=== using here-documents ===
To create or append to a config file i like to use here-documents.
create files with <code style="white-space: nowrap">></code>, expand files with ">>" after cat
<code>cat > /destination/file.ext << EOF
cat > /destination/file.ext << 'EOF' #
'EOF' is quoted Using a here-document with <code style="white-space: nowrap"> the lines -</code> would allow you to remove tabs to have a nice indentation in the here-document are script, but I'm not expandedusing tags for indentation.  create files with <code style="white-space: nowrap">></code>, expand files with <code style="white-space: nowrap">>></code>, after cat ==== expansions: on - EOF needs to be unquoted ====
EOF is unquoted => all lines of the here-document are subjected to parameter expansion, command substitution, and arithmetic expansion, the character sequence \newline is ignored, and ‘\’ must be used to quote the characters ‘\’, ‘$’, and ‘`’.
<nowiki>cat > /etc/nginx/snippets/letsencrypt.conf << EOF ssl_certificate /etc/letsencrypt/live/$(hostname)/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/$(hostname)/privkey.pem;EOF</nowiki><codestyle="white-space: nowrap">$(hostname)</code> will be expanded ==== expansions: off - EOF needs to be quoted ===='EOF' is quoted => the lines in the here-document are not expanded <nowiki>cat >> /etc/nginx/conf.d/seafile.conf << 'EOF' location / { proxy_set_header Host $host; [...] }EOF</nowiki><code style="white-space: nowrap">$host</code> will not be expanded == Links ==[https://www.grymoire.com/Unix/Sed.html The Grymoire - Sed Tutorial]
610
Bearbeitungen