Я выполняю bash-скрипт с локального компьютера в экземпляре aws ec2.Одна из программ - отправить zip-файлы в экземпляр ec2 и извлечь их в экземпляр ec2.Поскольку zip-файлы создаются динамически, я сохранил имя файла в переменной в скрипте bash и ссылаюсь на имя переменной в пути для выполнения файла tar в экземпляре EC2.Ниже приведен код:
скрипт bash на локальном компьютере:
extFile="images.tar.gz"
echo "Extracting images from tar file"
ssh -i my.pem ubuntu@12.345.67.890 "bash /home/ubuntu/extractTar.sh /home/ubuntu/$extFile"
echo "Images extracted from tar file"
скрипт bash в моем экземпляре ec2:
#!/bin/bash
FILE="$1"
tar -xf "$FILE" .
Проблема, с которой я сталкиваюсь, заключается в том, что, когда я называю имя файла tar переменным, оно не работает, однако
ssh -i my.pem ubuntu@12.345.67.890 "bash /home/ubuntu/extractTar.sh /home/ubuntu/$extFile"
, когда я запускаю его с фактическим именем
ssh -i my.pem ubuntu@12.345.67.890 "bash /home/ubuntu/extractTar.sh /home/ubuntu/images.tar.gz"
это работает.
Когда я запускал код с именем переменной $extFile
в режиме отладки, я мог видеть, что bash правильно отправляет код.
debug1: Sending env LANG = en_IN
debug1: Sending command: bash /home/ubuntu/extractTar.sh /home/ubuntu/images.tar.gz
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0
debug1: channel 0: free: client-session, nchannels 1
Transferred: sent 2460, received 2496 bytes, in 1.6 seconds
Bytes per second: sent 1549.1, received 1571.8
debug1: Exit status 0
Как указать имя переменной в моемпуть сценария bash для удаленного расположения?