Comment puis-je concaténer une variable shell à d'autres autres paramètres dans mes lignes de commande?
Par exemple,
#!/bin/sh
WEBSITE="danydiop"
/usr/bin/mysqldump --opt -u root --ppassword $WEBSITE > $WEBSITE.sql
Je dois concaténer .sql
à$WEBSITE
shell-script
shell
variable
anévrisme
la source
la source
${ }
concaténation ne soit en aucun cas. Par exemple,ELP=elp && echo $ELP && man --h${EPL}
ne fonctionne pas.Concaténez simplement le contenu de la variable avec tout ce que vous voulez concaténer, par exemple
Les doubles guillemets ne sont pas liés à la concaténation: ici
>$WEBSITE.sql
aurait également fonctionné. Ils sont nécessaires autour des extensions de variable lorsque la valeur de la variable peut contenir des caractères spéciaux du shell (espaces et\[?*
). Je recommande fortement de mettre des guillemets doubles autour de toutes les extensions de variables et substitutions de commandes, c'est-à-dire toujours écrire"$WEBSITE"
et"$(mycommand)"
.Pour plus de détails, voir $ VAR vs $ {VAR} et pour citer ou ne pas citer .
la source
J'utilise habituellement des guillemets, par exemple
echo "$WEBSITE.sql"
.Vous pouvez donc l'écrire comme:
la source
.
n'est pas un caractère valide dans un nom de variable; voir la réponse de wag si vous voulez concaténer une chaîne qui commence par des caractères valides (par exemple, "$ WEBSITEsql" ne fonctionnerait pas)