Respuestas:
Utilizar ${ }
para encerrar una variable.
Sin llaves:
VAR="foo"
echo $VAR
echo $VARbar
daría
foo
y nada, porque la variable $VARbar
no existe.
Con llaves:
VAR="foo"
echo ${VAR}
echo ${VAR}bar
daría
foo
foobar
Adjuntar el primero $VAR
no es necesario, pero es una buena práctica.
Por su ejemplo:
#!/bin/sh
WEBSITE="danydiop"
/usr/bin/mysqldump --opt -u root --ppassword ${WEBSITE} > ${WEBSITE}.sql
Esto funciona para bash
, zsh
, ksh
, tal vez otros también.
${ }
no sea concatenación en ningún sentido. Por ejemplo, ELP=elp && echo $ELP && man --h${EPL}
no funciona.
Simplemente concatene los contenidos variables a cualquier otra cosa que desee concatenar, por ejemplo
/usr/bin/mysqldump --opt -u root --ppassword "$WEBSITE" > "$WEBSITE.sql"
Las comillas dobles no están relacionadas con la concatenación: aquí >$WEBSITE.sql
también habría funcionado. Se necesitan alrededor de expansiones de variables cuando el valor de la variable puede contener algunos caracteres especiales de shell (espacios en blanco y \[?*
). Recomiendo poner comillas dobles alrededor de todas las expansiones de variables y sustituciones de comandos, es decir, siempre escribir "$WEBSITE"
y "$(mycommand)"
.
Para más detalles, vea $ VAR vs $ {VAR} y para cotizar o no cotizar .
Usualmente uso comillas, por ejemplo echo "$WEBSITE.sql"
.
Entonces podrías escribirlo así:
#!/bin/sh
WEBSITE="danydiop"
/usr/bin/mysqldump --opt -u root --ppassword $WEBSITE > "$WEBSITE.sql"
.
que no es un carácter válido en un nombre de variable; vea la respuesta de wag si desea concatenar una cadena que comienza con caracteres válidos (por ejemplo, "$ WEBSITEsql" no funcionaría)