Wie kann ich eine Shell-Variable mit anderen Parametern in meinen Befehlszeilen verknüpfen?
Beispielsweise,
#!/bin/sh
WEBSITE="danydiop"
/usr/bin/mysqldump --opt -u root --ppassword $WEBSITE > $WEBSITE.sql
Ich muss verketten .sql
zu$WEBSITE
shell-script
shell
variable
aneuryzm
quelle
quelle
${ }
keine Verkettung vorliegt. Zum BeispielELP=elp && echo $ELP && man --h${EPL}
funktioniert nicht.Verketten Sie einfach den Inhalt der Variablen mit dem, was Sie sonst noch verketten möchten, z
Die doppelten Anführungszeichen haben nichts mit Verkettung zu tun: Auch hier
>$WEBSITE.sql
hätte es funktioniert. Sie werden bei Variablenerweiterungen benötigt, wenn der Wert der Variablen einige Shell-Sonderzeichen (Leerzeichen und\[?*
) enthält. Ich empfehle dringend, alle Variablenerweiterungen und Befehlsersetzungen in doppelte Anführungszeichen zu setzen, dh immer schreiben"$WEBSITE"
und"$(mycommand)"
.Weitere Einzelheiten finden Sie unter $ VAR vs $ {VAR} und unter Zitieren oder Nichtzitieren .
quelle
Normalerweise verwende ich Zitate, z
echo "$WEBSITE.sql"
.So könnte man es schreiben:
quelle
.
ein Variablenname kein gültiges Zeichen enthält. Siehe Wag's Antwort, wenn Sie einen String verketten möchten, der mit gültigen Zeichen beginnt (zB "$ WEBSITEsql" würde nicht funktionieren)