HINWEIS: Die unten angebotene Lösung wurde getestet und funktioniert bekanntermaßen ordnungsgemäß.
Einfache Anführungszeichen unterbrechen die Variablenerweiterung, wenn Sie einen Teil des Pfads, den Sie verschieben, als Alias definiert haben.
Hier ist ein Skript, das DOUBLE- Anführungszeichen für den Anwendungsfall des globbed-Dateinamens command-configure_ .tar.gz * verwendet, wobei ein Pfad mit einer Variablen als Alias verwendet wird:
#!/bin/bash
USEREXECUTINGSCRIPT='admin'
SCRIPTSDIR="myscripts"
SCPUSER='terrencehoulahan'
SCPUSERPASSWD='Change-Me'
SCPHOST='1.2.3.4'
SCPDIRECTORYREMOTE='/Users/terrencehoulahan/Downloads/Ubuntu/18.04'
## Uncomment appropriate below command for your distro to install "sshpass"
#apt-get -y sshpass
#yum -y install sshpass
sshpass -p "$SCPUSERPASSWD" scp -o StrictHostKeyChecking=no $SCPUSER@$SCPHOST:"$SCPDIRECTORYREMOTE/command-configure_*.tar.gz" $(getent passwd|grep ^$(echo $USEREXECUTINGSCRIPT)|cut -d ':' -f6)/$SCRIPTSDIR/
Nach dem schließenden doppelten Anführungszeichen wird das lokale Verzeichnisziel erstellt, indem lediglich das Ausgangsverzeichnis des angegebenen Benutzers aus / etc / passwd extrahiert wird .
Der SCP - Befehl selbst wird vorangestellt sshpass
und -o StrictHostKeyChecking=no
vollständig zu automatisieren den scp
Befehl ohne Benutzerinteraktion. Sieht kompliziert aus, ist aber besser als Hardcodierungspfade, die sich voraussichtlich von Zeit zu Zeit ändern.
Wie auch immer, ein Beispiel mit doppelten Anführungszeichen, bei dem Variablen im Pfad, den Sie verschieben, erweitert werden müssen. HTH