Verketten einer Variablen mit einer Datei mit cat

Sep 29 2020

Ich wollte eine Bash-Funktion ausführen, die bei einer gegebenen Textvariablen diese zu einer Datei verkettet. dh

function print() {
cat << 'EOF' >> file
This $1 is a variable 
EOF
}

Aber es würde nicht funktionieren. Es würde immer ausgegeben This $1 is a variable.

Ich habe versucht ${1}, {$1}, '$1', "$1"und Kombinationen derer, keine gearbeitet. Gibt es eine spezielle Syntax oder sollte ich einen anderen Befehl verwenden ... was soll ich tun?

Antworten

2 ArkadiuszDrabczyk Sep 29 2020 at 16:27

Unquote EOF:

#!/usr/bin/env bash

function print() {
cat << EOF >> file
This $1 is a variable 
EOF
}

print stuff

Darin man bashsteht unter Here Documents:

Wenn das Wort nicht in Anführungszeichen gesetzt ist, werden alle Zeilen des hier gezeigten Dokuments einer Parametererweiterung, einer Befehlssubstitution und einer arithmetischen Erweiterung unterzogen. Die Zeichenfolge <newline> wird ignoriert und \ muss verwendet werden, um die Zeichen $ und `in Anführungszeichen zu setzen.