Poniższa nie działa dla mnie:Zdalne przypisanie ssh?
ssh [email protected] "k=5; echo $k;"
po prostu zwraca pusty wiersz.
Jak przypisać zmienną do sesji zdalnej (ssh)?
Uwaga: Moje pytanie brzmi nie o tym, jak przekazać zmienne lokalne do mojego sesji ssh, ale raczej, jak tworzyć i przypisywać zmiennych zdalnych. (Powinno być dość proste zadanie do przodu?)
Edit:
Bardziej szczegółowo Próbuję to zrobić:
bkp=/some/path/to/backups
ssh [email protected] "bkps=($(find $bkp/* -type d | sort));
echo 'number of backups: '${#bkps[@]};
while [ ${#bkps[@]} -gt 5 ]; do
echo ${bkps[${#bkps[@]}-1]};
#rm -rf $bkps[${#bkps[@]}-1];
unset bkps[${#bkps[@]}-1];
done;"
Polecenie find działa dobrze, ale dla jakiś powód $bkps
nie zostanie wypełniony. więc moje przypuszczenie, że byłaby to kwestia przypisania zmiennej, ponieważ myślę, że sprawdził wszystko inne ...
Podpowiedź najpierw wypróbuj polecenie lokalnie lub zaloguj się do serwera ssh i spróbuj. Bash wymaga użycia polecenia export do ustawienia zmiennych środowiskowych. ssh [email protected] "eksport k = 5; echo $ k;" – Codeguy007
@ Codeguy007: Rozszerzyłem opis mojego problemu bardziej. W rzeczywistości nie próbuję ustawiać żadnych zmiennych środowiskowych. Zakładam, że uproszczony problem ma coś wspólnego z przekierowaniem wyjścia ... – Pitt
Spróbuj 'ssh [email protected]" k = 5; echo \ $ k; "'. Zwróć uwagę na ukośnik odwrotny przed '$', aby zapobiec wczesnemu rozszerzeniu powłoki. Pojedyncze cytaty zamiast podwójnych cudzysłowów osiągnęłyby to samo. – twalberg