Jak mogę połączyć zmienną powłoki z innymi parametrami w moich wierszach poleceń?
Na przykład,
#!/bin/sh
WEBSITE="danydiop"
/usr/bin/mysqldump --opt -u root --ppassword $WEBSITE > $WEBSITE.sql
Muszę do łączenia .sql
z$WEBSITE
shell-script
shell
variable
aneuryzm
źródło
źródło
${ }
w żadnym sensie nie była to konkatenacja. Na przykładELP=elp && echo $ELP && man --h${EPL}
nie działa.Po prostu połącz zmienną zawartość z czymkolwiek, co chcesz połączyć, np
Podwójne cytaty nie mają związku z konkatenacją: tutaj też
>$WEBSITE.sql
by to działało. Są one potrzebne wokół rozszerzeń zmiennych, gdy wartość zmiennej może zawierać niektóre znaki specjalne powłoki (białe znaki i\[?*
). Zdecydowanie zalecam umieszczanie podwójnych cudzysłowów wokół wszystkich rozszerzeń zmiennych i podstawień poleceń, tj. Zawsze pisz"$WEBSITE"
i"$(mycommand)"
.Aby uzyskać więcej informacji, zobacz $ VAR vs $ {VAR} i cytować lub nie cytować .
źródło
Zazwyczaj używam cytatów, np
echo "$WEBSITE.sql"
.Możesz więc napisać to tak:
źródło
.
nie jest poprawnym znakiem w nazwie zmiennej; zobacz odpowiedź wag, jeśli chcesz połączyć łańcuch zaczynający się od prawidłowych znaków (np. „$ WEBSITEsql” nie zadziała)