La seguente non funziona per me:assegnazione della variabile remota ssh?
ssh [email protected] "k=5; echo $k;"
solo restituisce una riga vuota.
Come posso assegnare una variabile su una sessione remota (ssh)?
Nota: La mia domanda non è su come passare le variabili locali alla mia sessione ssh, ma piuttosto come creare e assegnare le variabili remote. (Dovrebbe essere un compito piuttosto semplice?)
Edit:
In particolare sto cercando di fare questo:
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;"
Il comando find funziona bene, ma per qualche motivo $bkps
non viene popolato. Quindi la mia ipotesi era che sarebbe stato un problema di assegnazione di variabili, dal momento che mi pare di aver controllato tutto il resto ...
Suggerimento: provare prima il comando localmente o accedere al server ssh e provarlo. Bash richiede di usare il comando export per impostare le variabili di ambiente. ssh [email protected] "export k = 5; echo $ k;" – Codeguy007
@ Codeguy007: ho ampliato ulteriormente la mia descrizione del mio problema. In realtà non sto cercando di impostare alcuna variabile di ambiente. Presumo che il problema semplificato abbia qualcosa a che fare con il reindirizzamento dell'output in realtà ... – Pitt
Prova 'ssh [email protected]" k = 5; echo \ $ k; "'. Notare il backslash prima di '$' per impedire che la shell si espanda presto. Le virgolette singole invece delle virgolette doppie realizzerebbero la stessa cosa. – twalberg